Решенные задачи на языке Паскаль
Условие задачи - из списка задач к Госэкзаменам по предмету "Технология разработки программных продуктов".
Задача №8. Ввести строку символов не более 50. Для каждого слова заданной строки (на русском) указать долю согласных. Определить слово в котором доля согласных максимальна.
const letter:array[1..23]of char= ('б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф', 'х','ч','ш','щ','ъ','ь','э'); var st:string[50]; i,j:byte; flag_word:boolean; all_letter,tmp_letter,max_letter,max:integer; BEGIN writeln('Введите строку:'); readln(st); writeln; max:=1; all_letter:=0; {всего согласных букв в строке } tmp_letter:=0; {хранение числа букв в каждом слове } max_letter:=0; {максимальное число согл. букв в слове } flag_word:=false; {слово не было начато } st:=' '+st; {считать, что строка начинается с пробела} {цикл обработки всей строки} for i:=2 to length(st) do begin {начало слова} if (st[i]<>' ')and(st[i-1]=' ') then flag_word:=true; {подсчёт, если было начало слова} if flag_word then begin write(st[i]); for j:=1 to 23 do if st[i]=letter[j] then begin inc(all_letter); inc(tmp_letter); end; end; {конец слова} if (st[i]=' ')and(st[i-1]<>' ')or(i=length(st)) then begin flag_word:=false; writeln(' = ',tmp_letter); if max_letter<tmp_letter then begin max_letter:=tmp_letter; inc(max); end; tmp_letter:=0; end; end; writeln; writeln('Всего согласных = ',all_letter); writeln('Максимально согласных в слове №',max); END.* константа letter - массив из согласных букв;
* переменные i,j - для цикла;
* переменная max - номер слова в котором максимальное число согласных.
Скачать исходник