ВУЗ:
Составители:
Рубрика:
19
End.{Proizved_matr}
Решим задачу обработки символьной информации с использованием мат-
риц . Количество строк матрицы и длина каждой строки определяются вводом.
Задача состоит в поиске строк матриц , обладающих заданным свойством.
Задача 5. Пусть дана последовательность , содержащая от 2 до 50 слов, в
каждом из которых от 1 до 8 строчных латинских букв; между соседними сло-
вами – не менее одного пробела, за последним словом – точка. Напечатайте те
слова последовательности, которые отличны от последнего слова и удовлетво-
ряют следующему свойству:
а) буквы слова упорядочены по алфавиту;
б) в слове нет повторяющихся букв.
♣ Последовательность оформим как двумерный массив р размерности
50х8, состоящий из символов. Очередной символ будем читать в переменную с .
В массиве d будем хранить длины введенных слов. Переменная k предназначе-
на для хранения количества введенных слов. Переменные i, j, m используются
как счетчики циклов.
Логическая переменная f имеет значение истина при выполнении свойства
из условия. Логическая переменная g принимает значение истина, когда слово
отлично от последнего слова. Слово выводится на экран в случае истинности
обеих переменных f и g.
Если буквы в слове упорядочены по алфавиту, то коды букв образуют не-
убывающую последовательность . Поэтому переменная f принимает значение
false, если обнаруживается хотя бы одна буква, код которой меньше кода пре-
дыдущей буквы .
Чтобы проверить , что в слове нет повторяющихся букв, организуем три
вложенных цикла. Первый (внешний) цикл по i перебирает слова (с первого по
предпоследнее), второй цикл по j перебирает буквы в слове (со второй до по-
следней), третий цикл по m перебирает буквы , предшествующие букве j в i - м
слове . Если j-я буква совпадает с предшествующей ей буквой , то переменная f
принимает значение false. ♣
Program Words_;
Uses crt;
Type words=array[1..8] of char;
Var i,j,m,k:integer; c:char; f,g:boolean;
p:array[1..50] of words; d:array[1..50] of 1..8;
Begin
Textbackground(7); Textcolor(blue); Clrscr;
writeln('Введите текст, заканчивающийся точкой ');
writeln('(слова отделяйте друг от друга пробелами)');
i:=1; j:=1;
repeat
repeat
read(c) {Читаем первый символ, отличный от пробела }
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »