|
Вопрос # 2 897/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
пожалуйста пошагово объясните что выполняется в это программе!
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- Label1: TLabel;
- Button1: TButton;
- Label2: TLabel;
- Edit2: TEdit;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- mas:array[1..100] of string;
- n:integer;
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.Button1Click(Sender: TObject);
- var max,st,st1:string;
- j,nom,i:integer;
- glasn:array[1..10] of char;
- flag:boolean;
- begin
- st:=trim(edit1.Text);
- st1:=st+' ';
- i:=0;
-
- while length(st1)>0 do
- begin
- i:=i+1;
- mas[i]:=copy(st1,1,pos(' ',st1)-1);
- delete(st1,1,pos(' ',st1));
- n:=i;
- end;
- max:=mas[1];
- nom:=1;
- for i:=2 to n do
- if length(mas[i])>length(max) then
- begin
- nom:=i;
- max:=mas[i];
- end;
- max:='';
-
-
-
-
-
-
-
-
-
-
-
- for i:=1 to length(mas[nom]) do
- begin
- flag:=false;
- for j:=1 to 10 do
- if mas[nom][i]=glasn[j] then flag:=true;
- if flag=false then
- max:=max+mas[nom][i];
- end;
- mas[nom]:=max;
- edit2.text:='';
- for i:=1 to n do
- edit2.text:=edit2.text+mas[i]+' ';
- end;
-
- end.
 |
Вопрос задал: Якакутов Евгений Михайлович (статус: Посетитель)
Вопрос отправлен: 11 июня 2009, 00:21
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, Якакутов Евгений Михайлович!
Как я люблю подобные задачи.... называется "я угадаю этот код с трех строк..."
Но попробуем
procedure TForm1.Button1Click(Sender: TObject);
var max,st,st1:string;
j,nom,i:integer;
glasn:array[1..10] of char;
flag:boolean;
begin
//ввели строку, удалили начальные и конечные проблелы
st:=trim(edit1.Text);
//допишем один пробел в конец. Просто что бы упростить алгоритм дальше
st1:=st+' ';
i:=0;
//этот код разделяет строку на слова и заносит их в массив.
while length(st1)>0 do
begin
i:=i+1;
mas[i]:=copy(st1,1,pos(' ',st1)-1);
delete(st1,1,pos(' ',st1));
n:=i;
end;
//этот кусочек кода ищет строку с максимальной длиной
max:=mas[1];
nom:=1;
for i:=2 to n do
if length(mas[i])>length(max) then
begin
nom:=i;
max:=mas[i];
end;
//готовим массив гласных букв
max:='';
glasn[1]:='а';
glasn[2]:='е';
glasn[3]:='и';
glasn[4]:='о';
glasn[5]:='ы';
glasn[6]:='ю';
glasn[7]:='я';
glasn[8]:='э';
glasn[9]:='у';
glasn[10]:='ё';
//перебирая все буквы в этом "самом длинном слове".
for i:=1 to length(mas[nom]) do
begin
//Следующие три строки проверяют, является ли текущая буква гласной.
flag:=false;
for j:=1 to 10 do
if mas[nom][i]=glasn[j] then flag:=true;
//и если это не так (то есть она согласная), то добавим в новую строку.
if flag=false then //ну кто так пишет??? ну не в Индии же живем! надо if not flag then
max:=max+mas[nom][i];
end;
mas[nom]:=max;
//а теперь изменённый массив выводим в едит2. Для этого вначале "соберем" слова в строку.
edit2.text:='';
for i:=1 to n do
edit2.text:=edit2.text+mas[i]+' ';
end;
А теперь подсуммируем. Задача наверно звучала где то так.
"В введненом списке слов, разделенных пробелом, найти слово с максимальной длинной и удалить с него все гласные. Получившуюся строку вывести".
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 11 июня 2009, 01:17
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|