Найти максимальное повторение гласной и согласной буквы в тексте - Pascal ABC
Формулировка задачи:
Помогите..пока буквы были строчными работала, использовал UpCase выдает только гласные. Исправьте, пожалуйста
Листинг программы
- uses crt;
- const sog=['B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Z'];
- gl=['A','E','Y','U','I','O'];
- var s,s1:string;
- i,k,mx,mx1,p:byte;
- c,t:char;
- begin
- writeln('Введите строку:');
- readln(s);
- s1:=s;
- mx:=0;
- for i:=1 to length(s) do
- s[i] := UpCase(s[i]);
- if s[i] in sog then
- begin
- k:=0;
- while pos(s[i],s1)>0 do
- begin
- k:=k+1;
- delete(s1,pos(s[i],s1),1);
- end;
- if k>mx then
- begin
- mx:=k;
- c:=s[i];
- end;
- end;
- s1:=s;
- mx1:=0;
- for i:=1 to length(s) do
- s[i] := UpCase(s[i]);
- if s[i] in gl then
- begin
- p:=0;
- while pos(s[i],s1)>0 do
- begin
- p:=p+1;
- delete(s1,pos(s[i],s1),1);
- end;
- if p>mx1 then
- begin
- mx1:=p;
- t:=s[i];
- end;
- end;
- if mx=0 then write('В строке нет согласных букв!')
- else write('Наиболее частая согласная буква ',c,' повторяется ',mx,' раз(а)');
- writeln;
- if mx1=0 then write('В строке нет гласных букв!')
- else write('Наиболее частая гласная буква ',t,' повторяется ',mx1,' раз(а)');
- end.
Решение задачи: «Найти максимальное повторение гласной и согласной буквы в тексте»
textual
Листинг программы
- const sog=['B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Z'];
- gl=['A','E','Y','U','I','O'];
- var s:string;
- a:array ['A'..'Z'] of integer;
- i,mx1,mx2:integer;
- c,sogl,glas:char;
- begin
- writeln('Введите строку:');
- readln(s);
- For c:='A' to 'Z' do a[c]:=0;
- For i:=1 to Length(s) do begin
- c:=Upcase(s[i]);
- a[c]:=a[c]+1;
- end;
- mx1:=0;
- mx2:=0;
- For c:='A' to 'Z' do begin
- IF c in sog THEN begin
- IF a[c]>mx1 THEN begin mx1:=a[c];
- sogl:=c;
- end;
- end
- ELSE begin
- IF a[c]>mx2 THEN begin mx2:=a[c];
- glas:=c;
- end;
- end;
- end;
- if mx1=0 then write('В строке нет согласных букв!')
- else write('Наиболее частая согласная буква ',sogl,' повторяется ',mx1,' раз(а)');
- writeln;
- if mx2=0 then write('В строке нет гласных букв!')
- else write('Наиболее частая гласная буква ',glas,' повторяется ',mx2,' раз(а)');
- end.
Объяснение кода листинга программы
- Создаются две константы: sog и gl, которые содержат наборы букв для поиска.
- Создается переменная s типа string для хранения введенной строки.
- Создается массив a типа array ['A'..'Z'] of integer для подсчета количества каждой буквы в строке.
- Запускается цикл For для каждой буквы в строке.
- Внутри цикла буква преобразуется в верхний регистр и присваивается переменной c.
- Проверяется, содержится ли эта буква в константе sog. Если да, то проверяется, сколько раз она встречается в строке.
- Если буква встречается больше, чем mx1, то mx1 обновляется и присваивается значение этой буквы. Также присваивается значение c переменной sogl.
- Если буква не содержится в константе sog, то аналогичные действия выполняются для переменной mx2 и буквы из константы gl.
- После завершения цикла выводится сообщение, если mx1 равно 0, то
В строке нет согласных букв!
иначеНаиболее частая согласная буква [sogl] повторяется [mx1] раз(а)
. - Аналогично выводится сообщение для переменной mx2.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д