Вывод сообщения если строка пустая после выполнения алгоритма - Pascal ABC
Формулировка задачи:
Добрый день.
Просьба помочь с вопросом: как можно вывести 1 раз сообщение при условии что не будут найдены слова в строке, в которых буквы упорядочены по алфавиту.
Поиск есть, но для данного алгоритма не могу придумать корректный вывод если слов в строке не окажется после выполнения поиска.
Листинг программы
- Uses crt;
- Var
- s,s1,temp1: string;
- i: byte;
- flag:boolean;
- Begin
- clrscr;
- write('Введите строку: ');
- readln(s);
- {1.Удаляем пробел в начале строки, если таковой имеется}
- while s[1]=' ' do delete(s,1,1);
- {2.Удаляем лишние пробелы между словами}
- for i:=length(s) downto 2 do
- if ((s[i]=' ') and (s[i-1]=' ')) then delete(s,i,1);
- {3.Поиск и удаление последнего слова из строки}
- for i:=length(s) downto 1 do
- if s[i]=' ' then
- begin
- delete(s,i,length(s)-i+1); {Удаляем найденное слово из строки}
- break; {Прерываем цикл}
- end;
- writeln;
- writeln('Преобразованная строка без последнего слова: ');
- writeln(s);
- writeln;
- temp1:=copy(s,1,length(s));
- writeln('Слова, в которых буквы упорядочены по алфавиту: ');
- temp1:=temp1+' ';
- While Pos(' ',temp1)>0 do
- Begin
- s1:=Copy(temp1,1,Pos(' ',temp1)-1);
- Delete(temp1,1,Pos(' ',temp1));
- flag:=true;
- For i:=1 to Length(s1)-1 do
- if s1[i]>s1[i+1] then flag:=false;
- if flag then write(s1,' ');
- End;
- readln;
- End.
Решение задачи: «Вывод сообщения если строка пустая после выполнения алгоритма»
textual
Листинг программы
- var k:byte;
- .........................
- writeln('Слова, в которых буквы упорядочены по алфавиту: ');
- k:=0;
- temp1:=temp1+' ';
- While Pos(' ',temp1)>0 do
- Begin
- s1:=Copy(temp1,1,Pos(' ',temp1)-1);
- Delete(temp1,1,Pos(' ',temp1));
- flag:=true;
- For i:=1 to Length(s1)-1 do
- if s1[i]>s1[i+1] then flag:=false;
- if flag then
- begin
- k:=1;
- write(s1,' ');
- end;
- End;
- if k=0 then write('Таких слов нет')
Объяснение кода листинга программы
- Переменная k инициализируется значением byte.
- Выводится сообщение «Слова, в которых буквы упорядочены по алфавиту: ».
- Переменная k инициализируется значением 0.
- Строка temp1 инициализируется пустым значением.
- Запускается цикл While, условием которого является наличие пробелов в строке temp1.
- Внутри цикла происходит следующее:
- Строка temp1 копируется в переменную s1 с первого символа до символа, находящегося на позиции Pos(' ',temp1) - 1.
- Символ в позиции Pos(' ',temp1) удаляется из строки temp1.
- Переменная flag инициализируется значением true.
- Запускается цикл For, условием которого является длина строки s1 от 1 до Length(s1)-1.
- Если символ в позиции i в строке s1 больше следующего символа, то переменная flag инициализируется значением false.
- Если значение переменной flag равно true, то:
- Инициализируется переменная k значением 1.
- Выводится символ из строки s1, разделенный пробелами.
- Если значение переменной flag равно false, то переменная flag инициализируется значением true.
- Если значение переменной k равно 0, то выводится сообщение «Таких слов нет».
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д