Размер шрифта: A AA Изображения Выключить Включить Цвет сайта Ц Ц Ц Х
Бесплатный конструктор сайтов - uCoz
Пятница, 07.02.2025, 00:00
Приветствую Вас Гость | RSS

Сайт учителя информатики  и ИКТ Шинкаренко Евгения Александровича

Реклама
Оцените сайт
Оцените мой сайт
Всего ответов: 837
Программирование
Какой язык программирования выбрать для подготовки к ЕГЭ
Всего ответов: 804

Решение задачи №7.

Задача №7.

На вход программе подается текст на английском языке, заканчива­ющийся точкой (другие символы «.» в тексте отсутствуют). Требуется написать программу, которая будет определять и выводить на экран английскую букву, встречающуюся в этом тексте чаще всего, и количество там таких букв. Строчные и прописные буквы при этом считаются неразличимыми. Если искомых букв несколь­ко, то программа должна выводить на экран первую из них по алфавиту.

Например, пусть файл содержит следующую запись: It is not a simple task. Yes!

Чаще всего здесь встречаются буквы I, S и Т (слово Yes в подсчете не учитывает­ся, так как расположено после точки). Следовательно, в данном случае программа должна вывести два символа, разделенных пробелом: I 3.


Решение задачи №7.

var
ch:char;  {символьная переменная поможет нам считать символы с клавиатуры}
st:string;  {строковая переменная примет значение всего текста до точки}
i,n,max:integer; {целочисленные переменные i-индекс, n-будет считать количество символов в тексте до точки, max-поможет определить какая буква встречается чаще всего}
a: array [97..122] of  integer; {целочисленный массив с индексами от 97 до 122 (промежуток величины кода строчных английских букв, смотрите алгоритм решения задачи №5), поможет определить какие буквы чаще всего встречаются в тексте}
begin
for i:=97 to 122 do  {задаем цикл для обнуления массива a}
a[i]:=0;  {обнулили массив a}
n:=0;  {начальное значение n равно 0}
repeat  {задаем цикл для считывания символов до точки}
begin
read(ch); {считываем символ в символьную переменную ch}
st:=st+ch; {строковая переменная st увеличивает свое значение на величину символьной переменной ch (на величину считанного символа), по окончании цикла строковая переменная будет иметь значение всего текста до точки}
n:=n+1;  {считаем каждый символ}
end;
until ch='.';  {если следующий символ "Точка", выходим из цикла}
for i:=1 to n do  {
так как нам не важно ПРОПИСНЫЕ или строчные буквы, задаем цикл в котором ПРОПИСНЫЕ английские буквы станут строчными}
begin
if (ord(st[i])>64)and(ord(st[i])<91) then {если текущий символ - это
ПРОПИСНАЯ буква (код ПРОПИСНОЙ буквы лежит в интервале от 65 до 90), то  ..}
st[i]:=char(ord(st[i])+32);  {.. то
к коду символа прибавляем 32 (ord(st[i])+32), а получившееся значение кода преобразуем в символ}
if (ord(st[i])>96)and(ord(st[i])<123) then {если текущий символ - не ПРОПИСНАЯ буква, то проверяем строчная ли это буква(код строчной буквы лежит в интервале от 97 до 122), а не пробел или другой символ}
a[ord(st[i])]:=a[ord(st[i])]+1;  {если текущий символ строчная буква, то массив a с индексом равным значению кода символа (a[ord(st(i)]), увеличивает свое значение на единицу, мы подсчитываем сколько раз встречается в тексте каждый символ}
end;  {мы подсчитали сколько раз в тексте встречается каждый символ (каждая буква), осталось только узнать какие буквы чаще всего встречаются, и вывести на экран первую по алфавиту из них}
max:=0;  {начальное значение переменной max равно 0}
for i:=97 to 122 do  {в данном цикле определим какие буквы чаще всего встречаются в тексте (самые популярные)}
if a[i]>max then max:=a[i];  {задаем условие если значение элемента массива больше значения переменной max, то переменная max принимает значение элемента массива, после прохода цикла переменная max покажет нам сколько раз в тексте можно встретить самые популярные буквы, нам осталось вывести стоящую первую в алфавите популярную букву}
i:=96;  {переменная i будет иметь значение кода первой строчной буквы алфавита - а минус единица}
repeat  {для этого задаем цикл который будет просматривать все строчные буквы с начала алфавита}
i:=i+1;  {каждый проход цикла переменная i увеличивает свое значение на 1, мы переходим к следующей букве}
if a[i]=max then writeln(char(i),' ',max);  {как только элемент массива a[i] будет равен переменной max, мы выводим на экран значение нужной нам по задаче буквы и количество повторений в тексте, и...} 
until a[i]=max; {.. и тут же выходим из цикла, задача решена}
end.

Алгоритм решения задачи

  • Считываем символы текста до точки, переменная типа строка принимает значение всего текста (далее к данной переменной будем обращаться как к массиву символов (st[i])), также считаем количество символов до точки.
  • Далее переводим все ПРОПИСНЫЕ буквы в строчные и подсчитываем сколько каждая буква встречалась в тексте.
  • Далее определяем сколько раз в тексте встречаются самые популярные буквы.
  • В конце проходим весь алфавит строчных букв с начала, проверяем является ли буква популярной, как только буква входит в состав популярных, выводим результат на экран, и тут же выходим из цикла. 
Возврат к списку задач
Реклама
Календарь
«  Февраль 2025  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
2425262728
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Счетчик яндекс
Яндекс.Метрика