Консультация № 151816
25.11.2008, 19:06
0.00 руб.
25.11.2008, 19:49
0 1 1
Здраствуйте Эксперты памагите мне пажалуйста ришить задачу по Pascal
Тема задачи:Алгоритмы обработки строк.
Сама задача:Написать программу, определяющую в данном предложении слово,в катором доля гласных максимальна.

Обсуждение

Неизвестный
25.11.2008, 20:38
общий
это ответ
Здравствуйте, Брага Д.В.!

В приложении код программы со всеми пояснениями.
Словом считалась последовательность символов, ограниченная пробелами и/или символами начала/конца строки.

С уважением, Дмитрий.

Приложение:
program z151816;
const
glas = 'qeyuioaQEYUIOA';//список гласных

Function dolya_glas(sl:string):Real;//расчитывает долю гласных в слове sl
var gl,dlina_sl:Integer;
begin
gl := 0;
dlina_sl := length(sl);//запоминаем сколько символов в слове
While length(sl) > 0 do//перебираем слово
begin
IF pos(copy(sl,1,1),glas) > 0 then//если нашли гласную -
gl := gl+1;//считаем её
delete(sl,1,1)
end;
dolya_glas:= gl/dlina_sl;//расчитываем долю гласных в этом слове
end;

Function find(s:string):String;
var sl,res:string;
max:real;
begin
While pos(' ',s) > 0 do//удаляем по 2 пробела в строке
delete(s,pos(' ',s),1);
IF pos(' ',s) = 1 then//если первый символ - пробел - удаляем его
delete(s,1,1);
res:=copy(s,1,pos(' ',s)-1);//первое слово считаем за слово с макс. долей гласных
delete(s,1,pos(' ',s));
max:=dolya_glas(res);

While length(s) > 0 do//перебираем все слова в предложении
begin
sl:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
IF dolya_glas(sl) > max then//если доля гласных в текущем слове больше чем в предыдущем максимальном -
begin
res:=sl;//считаем это слово за слово с макс. долей гласных
max:=dolya_glas(sl);
end;
IF (pos(' ',s) = 0)and(length(s) > 0) then//если в строке осталось одно слова без пробела в конце - добавляем пробел чтобы прога не зависла.
s:=s + ' ';
end;
find:=res;
end;

var s:String;
begin
WriteLn('Enter sentence');
ReadLn(s);
WriteLn('This word: ',find(s));
end.
Форма ответа