Проверить, верно ли, что в данной строке всякое несимметричное слово имеет чётную длину - Pascal
Формулировка задачи:
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими).
Проверить, верно ли, что в данной строке всякое несимметричное слово имеет четную длину.
P.S.
Тип данных string.
Не использовать стандартные функции работы со строками, в том числе IntToStr,
FloatToStr, StrToInt и StrToFloat (можно только Length).
P.S('2')
Помогите если не трудно
Решение задачи: «Проверить, верно ли, что в данной строке всякое несимметричное слово имеет чётную длину»
textual
Листинг программы
var s, w, r: string;
i: integer;
f: boolean;
begin
writeln('Введите строку:');
readln(s);
s := s + ' ';
w := '';
r := '';
f := true;
for i := 1 to length(s) do
if s[i] = ' '
then begin
f := f and ((w = r) >= odd(length(w)));
w := '';
r := ''
end
else begin
w := w + s[i];
r := s[i] + r
end;
if f then write('В') else write('Не в');
write('сякое несимметричное слово имеет чётную длину');
readln
end.
Объяснение кода листинга программы
- Объявляются переменные:
s,w,r: строкового типа;i: целочисленного типа;f: логического типа.
- Выводится сообщение
Введите строку:. - Вводится строка и сохраняется в переменную
s. - К переменной
sдобавляется пробел. - Создаются пустые строки
wиr. - Устанавливается значение переменной
fкакtrue. - Выполняется цикл для каждого символа в строке
s:- Если текущий символ равен пробелу, то:
- Вычисляется значение переменной
f, умножая текущее значениеfна результат логического выражения ((w = r) >= odd(length(w))); - Обнуляются строки
wиr.
- Вычисляется значение переменной
- В противном случае:
- Добавляется текущий символ к строке
w. - Текущий символ добавляется в начало строки
r.
- Добавляется текущий символ к строке
- Если текущий символ равен пробелу, то:
- В зависимости от значения переменной
fвыводится сообщениеВсякое несимметричное слово имеет чётную длинуилиНе всякое несимметричное слово имеет чётную длину. - Ожидается нажатие клавиши для завершения программы.