Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Поиск самой редкой гласной в предложении

Задача. Ввести предложение. Найти и вывести на экран наиболее редко встречающуюся в нем гласную. Решение. В этой задаче необходимо использовать несколько (массив) счетчиков: столько, сколько символов в строке эталонов. В начале подсчитывается, сколько раз каждый эталонный символ встречается в предложении, а затем применяется известный алгоритм нахождения минимума. При этом необходимо учесть, что тривиальное значение минимума, равное нулю, не может быть решением, так как такой символ вообще отсутствует в предложении.
Program Min_Gl;
Const
Nmax= 20; { Максимальное количество счетчиков гласных }
Var
Predl,Gl:String; { Предложение и эталонная строка }
Kol:Array[1..Nmax] Of Integer; { Счетчики гласных }
n,m,i,j,Min,Nom:Integer; { Вспомогательные переменные }
Begin
Gl:=’аеёиоуыэюяАЕЁИОУЫЭЮЯ’; {Строка гласных (эталонов)}
m:=Length(Gl);
WriteLn('Введите предложение');
ReadLn(Predl);
n := Length(Predl);
For j:=1 to m do
Begin
Kol[j] := 0;
For i:=1 to n do
If Predl[i] = Gl[j] then
Kol[j]:=kol[j] + 1;
End;
Min:=MaxInt;
Nom:=0;
For j:=1 to m do
If kol[j]>0 then
If kol[j]< Min then
Begin
Min:= kol[j];
Nom:=j;
End;
Writeln('Наиболее редкая гласная в предложении -', Gl[Nom]);
Writeln('Она встречается ',Min,' раз');
Writeln('Работа окончена. Нажмите клавишу ENTER');
Readln;
End.
Поиск минимума в данном случае выполняется в условиях некоторой неопределенности, так как неизвестно, какие из массива найденных количеств будут иметь ненулевые значения. Чтобы избежать присваивания переменной Min нуля, на ее место перед началом поиска минимума записывается абсурдно большое число - MaxInt (Максимальное целое), которое затем будет заменено первой же ненулевой величиной.
 Похожие публикации: Pascal

Войти и комментировать [ Вход | Регистрация ]