Учебный курс Программирование на Delphi. Модуль 8: различия между версиями

Материал из Wiki Mininuniver
Перейти к навигацииПерейти к поиску
 
 
(не показано 11 промежуточных версий 3 участников)
Строка 1: Строка 1:
<center>'''Программирование на Delphi структуры выбора'''</center>
+
<center>'''Работа со строками'''</center>
  
 
== Пример 1.==  
 
== Пример 1.==  
Строка 64: Строка 64:
 
   end.
 
   end.
 
*'''Форма с результатом работы программы:'''
 
*'''Форма с результатом работы программы:'''
[[Изображение:-2-3.JPG]]
+
[[Изображение:-7-1.JPG]]
 +
== Пример 2.==
 +
*'''Условие задачи:'''
 +
В данном массиве из слов подсчитать количество слов, начинающихся и заканчивающихся гласной буквой.
 +
 
 +
'''Использованные компоненты:'''
 +
 
 +
Label1 - используется для текстовых комментариев;
 +
 
 +
Label2 - используется для текстовых комментариев;
 +
 
 +
edit1 - используется для ввода количества слов;
 +
 
 +
edit2 - используется для ввода числового массива;
 +
 
 +
BitBtn1 - запуск программы;
 +
 
 +
BitBtn2 - выход из программы;
 +
 
 +
*'''Программный код:'''
 +
 
 +
  unit Unit1;
 +
  interface
 +
  uses
 +
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
  Dialogs, StdCtrls, Buttons;
 +
  type
 +
  TForm1 = class(TForm)
 +
    Memo1: TMemo;
 +
    Label1: TLabel;
 +
    Label2: TLabel;
 +
    BitBtn1: TBitBtn;
 +
    BitBtn2: TBitBtn;
 +
    Label3: TLabel;
 +
    Edit1: TEdit;
 +
    procedure BitBtn2Click(Sender: TObject);
 +
    procedure BitBtn1Click(Sender: TObject);
 +
  private
 +
    { Private declarations }
 +
  public
 +
    { Public declarations }
 +
  end;
 +
  var
 +
  Form1: TForm1;
 +
  implementation
 +
  {$R *.dfm}
 +
  procedure TForm1.BitBtn2Click(Sender: TObject);
 +
  begin
 +
  Close;
 +
  end;
 +
  const maxn=100;
 +
  var s:array[1..maxn] of string;
 +
      l,n,i,k:integer;
 +
  procedure TForm1.BitBtn1Click(Sender: TObject);
 +
  begin
 +
  n:=strtoint(edit1.Text);
 +
  for i:=1 to n do
 +
  s[i]:=memo1.Lines[i-1];
 +
  k:=0;
 +
    for i:=1 to n do
 +
      begin
 +
      l:=length(s[i]);
 +
      if (pos(s[i][1], 'аоиуеыэюяАОИУЕЫЭЮЯ') > 0)
 +
        and (pos(s[i][1], 'аоиуеыэюяАОИУЕЫЭЮЯ') > 0)
 +
        then k:= k+1
 +
  end;
 +
  label2.Caption:=inttostr(k);
 +
  end;
 +
  end.
 +
*'''Форма с результатом работы программы:'''
 +
[[Изображение:7-2.JPG]]
  
 
==Задание==
 
==Задание==
  
<CENTER>'''Таблица №10'''</CENTER>
+
Таблица 11
 
{| border=4   
 
{| border=4   
 
  !Номер варианта||Условие||
 
  !Номер варианта||Условие||
 +
  |-
 +
|<center>1</center>||Проверить, является ли строка палиндромом (т.е. читается ли она одинакого слева на право и справа налево). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора.||
 +
  |-
 
  |-
 
  |-
|<center>1</center>||Установить название дня недели по его номеру, например, 1 - понедельник, 2 - вторник и т.д. ||
+
|<center>2</center>||Проверить, верно ли что в строке чередуются гласные и согласные буквы.Пробелы игнорируются.||
 +
  |-
 
  |-
 
  |-
 
+
|<center>3</center>||Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.||
|<center>2</center>||Определить название месяца по его номеру, например, 1 - январь, 2 - февраль и т.д.||
 
 
   |-
 
   |-
|<center>3</center>||Определить название заданной цифры, например 1 - один,  5 - пять  и т.д.||
 
 
  |-
 
  |-
|<center>4</center>||Дано русское название языка                              программирования. Определить  его английский эквивалент,  например: Бейсик - Basic. Для определения использовать таблицу:
+
|<center>4</center>||В заданном предложении указать слово, в котором доля гласных а,е,и максимальна.||
Бейсик - Basic,      Лисп - Lisp,
 
Си - С,                    Фортран - Fortran,
 
Ада - Ada,               ПЛ/1 - PL/1,
 
Паскаль - Pascal,     Пролог- Prolog.
 
||
 
 
   |-
 
   |-
 
  |-
 
  |-
|<center>5</center>||Определить английское название заданной цифры, например, 1- one, 7- seven и т.д.||
+
|<center>5</center>||В заданном предложении найти самое короткое и самое длинное слово.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>6</center>||Определить название отметки, заданной числом, например,  5-отлично, 2-неудовлетворительно||
+
|<center>6</center>||Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>7</center>||Установить английское название дня недели по его номеру, например, 1-Sunday, 2-Monday и т.д.||
+
|<center>7</center>||В заданном тексте удалить символ "," и подсчитать число удаленных символов.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>8</center>||Определить название арифметической операции по ее изображению, например, + - сложение, * - умножение  и т.д.  ||
+
|<center>8</center>||В заданном тексте подсчитать количество гласных букв.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>9</center>||Группу детей, приехавшую в оздоровительный лагерь, распределяют по отрядам по  принципу:
+
|<center>9</center>||В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о".||
с 6 до 7 лет - 5-й отряд
 
с 7 до 9 лет - 4-й отряд
 
с 9 до 11 лет - 3-й отряд
 
с 11 до 13 лет - 2-й отряд
 
с 13 до 15 лет - 1-й отряд
 
Составьте программу, которая позволила бы каждому ребенку определять свой отряд.
 
||
 
 
   |-
 
   |-
 
  |-
 
  |-
|<center>10</center>||Определить английское название месяца по его номеру, например, 1 - January, 2 -February  и т.д.||
+
|<center>10</center>||Подсчитать количество слов в предложении.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>11</center>||Определить название операции отношения по ее изображению, например, = - равно, < > - не равно,  >= - не меньше и т.д.||
+
|<center>11</center>||Определить, сколько раз в строке встречается заданное слово.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>12</center>||Определить служебное слово для обозначения одной из стандартных логических операций в Паскале, например, отрицание - not, исключающее ИЛИ - xor и т.д.||
+
|<center>12</center>||Для каждого слова заданного предложения указать долю согласных.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>13</center>||Определить название группы музыкантов по количеству участников, например, 1- соло, 2 – дуэт и т.д.||
+
|<center>13</center>||Определить слово в заданном предложении, в котором доля гласных максимальна.||
 
   |-
 
   |-
 
  |-
 
  |-
|<center>14</center>||Установить название вида линий в модуле Graph Паскаля по его номеру, например, 0 - сплошная, 1 - пунктирная и т.д.||
+
|<center>14</center>||Удалить из текста пробелы и подсчитать число удаленных символов.||
 
   |-
 
   |-
 +
  |}
 +
Таблица 12
 +
{| border=1
 +
|-
 +
!Номер варианта||Условие
 +
|-
 +
|<center>1</center>||Дан массив из слов А(N). Найти все слова,  заканчивающиеся гласной буквой.
 +
|-
 +
|<center>2</center>||Дан массив из слов Х(m). Найти все слова четной длины.
 +
|-
 +
|<center>3</center>||Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о".
 +
|-
 +
|<center>4</center>||Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной.
 +
|-
 +
|<center>5</center>||Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки.
 +
|-
 +
|<center>6</center>||Дан массив из слов A(k). Найти все слова, начинающиеся  и заканчивающиеся одной и той же буквой.
 +
|-
 +
|<center>7</center>||Дан массив из слов A(k). Найти все слова с четным  количеством буквы "е".
 +
|-
 +
|<center>8</center>||Дан массив из слов У(L). Найти все слова, содержащие  шипящие.
 +
|-
 +
|<center>9</center>||Дан массив из слов A(n). Найти все слова, начинающиеся  с заданной буквы.
 +
|-
 +
|<center>10</center>||Дан массив из слов У(m). Найти все слова, у которых есть буквы а, о и е.
 +
|-
 +
|<center>11</center>||Дан массив из слов Т(к). Найти все слова, начинающиеся или заканчивающиеся буквой "з".
 +
|-
 +
|<center>12</center>||Дан массив из слов Т(к). Найти все слова, содержащие заданное количество букв.
 +
|-
 +
|<center>13</center>||Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы.
 +
|-
 +
|<center>14</center>||Дан массив из слов X(k). Найти все слова, длина которых кратна трем. 
 +
 
   |}
 
   |}
  

Текущая версия на 11:41, 20 мая 2008

Работа со строками

Пример 1.

  • Условие задачи:

Удалить из строки все "лишние" пробелы.

  • Использованные компоненты:

Label1 - используется для текстовых комментариев;

edit1 - используется для ввода строки;

edit2 - используется для вывода строки;

BitBtn1 - запуск программы;

BitBtn2 - выход из программы;

  • Программный код:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;
 type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label3: TLabel;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
   Edit1: TEdit;
   Edit2: TEdit;
   procedure BitBtn2Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.dfm}
  var s:string;
      l:integer;
 procedure TForm1.BitBtn2Click(Sender: TObject);
 begin
 close;
 end;
 procedure TForm1.BitBtn1Click(Sender: TObject);
 begin
 s:=edit1.Text;
 l:=pos(' ',s);
 if l=0 then edit2.Text:='Удаления не было'
     else begin
             while l>0 do //пока в строке есть парные пробелы
             begin
               delete(s,l,1);
               l:=pos(' ',s);
             end;
             edit2.Text:=(s);
         end;
 end;
 end.
  • Форма с результатом работы программы:

-7-1.JPG

Пример 2.

  • Условие задачи:

В данном массиве из слов подсчитать количество слов, начинающихся и заканчивающихся гласной буквой.

Использованные компоненты:

Label1 - используется для текстовых комментариев;

Label2 - используется для текстовых комментариев;

edit1 - используется для ввода количества слов;

edit2 - используется для ввода числового массива;

BitBtn1 - запуск программы;

BitBtn2 - выход из программы;

  • Программный код:
 unit Unit1;
 interface
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;
 type
 TForm1 = class(TForm)
   Memo1: TMemo;
   Label1: TLabel;
   Label2: TLabel;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
   Label3: TLabel;
   Edit1: TEdit;
   procedure BitBtn2Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
 var
 Form1: TForm1;
 implementation
 {$R *.dfm}
 procedure TForm1.BitBtn2Click(Sender: TObject);
 begin
 Close;
 end;
 const maxn=100;
 var s:array[1..maxn] of string;
     l,n,i,k:integer;
  procedure TForm1.BitBtn1Click(Sender: TObject);
  begin
  n:=strtoint(edit1.Text);
  for i:=1 to n do
 s[i]:=memo1.Lines[i-1];
 k:=0;
   for i:=1 to n do
     begin
     l:=length(s[i]);
     if (pos(s[i][1], 'аоиуеыэюяАОИУЕЫЭЮЯ') > 0)
        and (pos(s[i][1], 'аоиуеыэюяАОИУЕЫЭЮЯ') > 0)
        then k:= k+1 
 end;
 label2.Caption:=inttostr(k);
 end;
 end.
  • Форма с результатом работы программы:

7-2.JPG

Задание

Таблица 11

Номер варианта Условие
1
Проверить, является ли строка палиндромом (т.е. читается ли она одинакого слева на право и справа налево). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора.
2
Проверить, верно ли что в строке чередуются гласные и согласные буквы.Пробелы игнорируются.
3
Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок.
4
В заданном предложении указать слово, в котором доля гласных а,е,и максимальна.
5
В заданном предложении найти самое короткое и самое длинное слово.
6
Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.
7
В заданном тексте удалить символ "," и подсчитать число удаленных символов.
8
В заданном тексте подсчитать количество гласных букв.
9
В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о".
10
Подсчитать количество слов в предложении.
11
Определить, сколько раз в строке встречается заданное слово.
12
Для каждого слова заданного предложения указать долю согласных.
13
Определить слово в заданном предложении, в котором доля гласных максимальна.
14
Удалить из текста пробелы и подсчитать число удаленных символов.

Таблица 12

Номер варианта Условие
1
Дан массив из слов А(N). Найти все слова, заканчивающиеся гласной буквой.
2
Дан массив из слов Х(m). Найти все слова четной длины.
3
Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о".
4
Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной.
5
Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки.
6
Дан массив из слов A(k). Найти все слова, начинающиеся и заканчивающиеся одной и той же буквой.
7
Дан массив из слов A(k). Найти все слова с четным количеством буквы "е".
8
Дан массив из слов У(L). Найти все слова, содержащие шипящие.
9
Дан массив из слов A(n). Найти все слова, начинающиеся с заданной буквы.
10
Дан массив из слов У(m). Найти все слова, у которых есть буквы а, о и е.
11
Дан массив из слов Т(к). Найти все слова, начинающиеся или заканчивающиеся буквой "з".
12
Дан массив из слов Т(к). Найти все слова, содержащие заданное количество букв.
13
Дан массив из слов Z(m). Найти все слова, в которых есть две подряд идущие одинаковые буквы.
14
Дан массив из слов X(k). Найти все слова, длина которых кратна трем.

Литература

  1. Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
  2. Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
  3. Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.

Ссылки

Учебный курс Программирование на Delphi

Учебный план курса Программирование на Delphi