Посчитать количество гласных букв в введенной строке

Posted by obzor under Delphi, Pascal

При помощи процедур написать программу. При вводе слова с клавиатуры считать количество гласных букв (английских) в нём.

Такие задачи лучше решать с использованием множеств:

Недавно мы прошли строковый тип данных в Паскаль. Сегодня предлагаю исходник паскаль, который подсчитывает сколько гласных латинских букв в строке. Данная задача довольно часто встречается при изучении языка программирования Pascal, а также Delphi. Данная программа использует цикл с параметром For, т.к. известна длина строки (её можно узнать с помощью функции length) .Также используется условный оператор выбора Case of. Можно использовать и условный оператор IF, но Case использовать рациональнее.

Исходный код программы Pascal:

К сожалению, пояснительных комментариев нет, но код программы довольно простой, поэтому разобраться не сложно.

У пользователя запрашивается текстовая строка, содержащая только буквы кириллического и латинского алфавитов, символ пробела и знаки препинания.

  • 1. Подсчитать количество гласных букв в строке.
  • 2. Подсчитать количество слов в строке.
  • 3. Сделать первую букву каждого слова прописной.
  • 4. Выяснить, является ли строка палиндромом (одинаково читается как справа налево, так и слева направо).
  • 5. Запросить два слова. Все вхождения первого слова в строке заменить вторым.
  • 6. Выяснить, какая из букв встречается в строке наибольшее число раз. Если таких букв несколько, вывести каждую из них. При подсчете не различать строчные и прописные буквы.

Пусть вводимая пользователем строка имеет идентификатор stroka. Строковые переменные — это, прежде всего, совокупность символов типа char, поэтому в заголовке программы логично определить пользовательский тип данных symbol в виде множества элементов типа char. В разделе описания переменных определены две переменные типа symbol. Первая принимает значения всех возможных гласных русского и английского языков (переменная glasn), вторая — значения всевозможных букв этих языков (переменная letter).

Читайте также  Программа для записи дисков portable

Общий заголовок и раздел описаний программы для решения всех поставленных задач приведен в листинге 7.3. Пояснения необходимости конкретных переменных приводятся при решении той или иной задачи.

symbol=set of char;

Для хранения количества гласных букв введена целочисленная переменная count_glasn. Программный код запроса строковой переменной st г ока и решения первой задачи приведен в листинге 7.4.

write(‘Введите текстовую строку: ‘);

Для хранения количества слов используется целочисленная переменная count_word. Программный код и пояснения решения второй задачи приведены в листинге 7.5.

Программный код решения третьей задачи с пояснениями приведен в листинге 7.6.

if (stroka[i] in letter) and not(stroka[i-1] in letter) then stroka[i]:^uppercase(stroka[i]); <Если символ с номером i является буквой, а предшествующий ему символ не является, то изменить регистр символа с индексом i на верхний>

Для определения, является ли введенная строка stroka палиндромом, введена вспомогательная переменная stroka_temp, которая в итоге содержит только тс символы, которые являются буквами (не буквы удаляются процедурой delete). Переменная palin содержит булевское значение: true, если stroka является палиндромом, и false — в противном случае.

Буквы палиндрома должны быть симметричны относительно «центра» строки. Если количество букв в stroka четное, то сравниваются символы и индексы 1 и length (stroka), 2 и length (stroka)-1 и т.д. до length (stroka_temp) div 2. Если количество букв в stroka нечетное, то сравниваются символы до пары length (stroka_temp) div 2 и (length(stroka_temp) div 2))+2.

Программный код и пояснения решения четвертой задачи приведены в листинге 7.7.

stroka_temp:=stroka; (Инициализация значения вспомогательной переменной>

while i stroka_temp

[length(stroka_temp)-i+1] then palin:=false;

if palin=true then writeln(‘Строка является палиндромом!’) else writeln(‘Строка не является палиндромом!’);

Для решения пятой задачи введена переменная l_sl, содержащая длину строки si («что заменять»). Это было сделано для уменьшения объема программного кода. Программный код и пояснения решения пятой задачи приведены в листинге 7.8.

Читайте также  Проверка оператора по imei iphone

write(‘Что заменять: ‘); Readln(sl);

write(‘На что заменять: ‘); Readln(s2);

for i:=l to length(stroka)-l_sl+l do

writeln(‘Строка после замены: ‘,stroka);

Для решения шестой задачи определена переменная tmp_char символьного типа для хранения символов только в нижнем регистре (по условию задачи регистр не важен), а также два массива:

  • 1) массив rus, индексами которого являются строчные символы русского алфавита;
  • 2) массив eng, индексами которого являются строчные символы английского алфавита.

В программе используется переменная max_letter, хранящая количество повторений самого частого символа в строке.

Программный код и пояснения решения шестой задачи приведены в листинге 7.9.

for i:=l to length(stroka) do begin

if tmp_ch in [‘a ’ . . ‘ z ‘ ] then inc(eng[tmp_ch]) ;

if rus[tmp_ch]>max_letter then

foreach tmp_ch in [ 1 а 1 ..’z’] do

if eng[tmp_ch]>max_letter then

writeln(‘Максимальное число раз в строке встречаются буквы:’);

if rus[tmp_ch]=max_letter then writeln(tmp_ch, 1

— ‘,rus[tmp_ch], 1 раз’); foreach tmp_ch in [ 1 a 1 ..’z’] do

if eng[tmp_ch]=max_letter then writeln(tmp_ch, 1

Ссылка на основную публикацию
Adblock
detector