Вывод сообщения если строка пустая после выполнения алгоритма - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Добрый день. Просьба помочь с вопросом: как можно вывести 1 раз сообщение при условии что не будут найдены слова в строке, в которых буквы упорядочены по алфавиту. Поиск есть, но для данного алгоритма не могу придумать корректный вывод если слов в строке не окажется после выполнения поиска.
Листинг программы
  1. Uses crt;
  2. Var
  3. s,s1,temp1: string;
  4. i: byte;
  5. flag:boolean;
  6. Begin
  7. clrscr;
  8. write('Введите строку: ');
  9. readln(s);
  10. {1.Удаляем пробел в начале строки, если таковой имеется}
  11. while s[1]=' ' do delete(s,1,1);
  12. {2.Удаляем лишние пробелы между словами}
  13. for i:=length(s) downto 2 do
  14. if ((s[i]=' ') and (s[i-1]=' ')) then delete(s,i,1);
  15. {3.Поиск и удаление последнего слова из строки}
  16. for i:=length(s) downto 1 do
  17. if s[i]=' ' then
  18. begin
  19. delete(s,i,length(s)-i+1); {Удаляем найденное слово из строки}
  20. break; {Прерываем цикл}
  21. end;
  22. writeln;
  23. writeln('Преобразованная строка без последнего слова: ');
  24. writeln(s);
  25. writeln;
  26. temp1:=copy(s,1,length(s));
  27. writeln('Слова, в которых буквы упорядочены по алфавиту: ');
  28. temp1:=temp1+' ';
  29. While Pos(' ',temp1)>0 do
  30. Begin
  31. s1:=Copy(temp1,1,Pos(' ',temp1)-1);
  32. Delete(temp1,1,Pos(' ',temp1));
  33. flag:=true;
  34. For i:=1 to Length(s1)-1 do
  35. if s1[i]>s1[i+1] then flag:=false;
  36. if flag then write(s1,' ');
  37. End;
  38. readln;
  39. End.

Решение задачи: «Вывод сообщения если строка пустая после выполнения алгоритма»

textual
Листинг программы
  1. var k:byte;
  2. .........................
  3. writeln('Слова, в которых буквы упорядочены по алфавиту: ');
  4.     k:=0;
  5.     temp1:=temp1+' ';
  6.     While Pos(' ',temp1)>0 do
  7.      Begin
  8.         s1:=Copy(temp1,1,Pos(' ',temp1)-1);
  9.         Delete(temp1,1,Pos(' ',temp1));
  10.         flag:=true;
  11.         For i:=1 to Length(s1)-1 do
  12.         if s1[i]>s1[i+1] then flag:=false;
  13.         if flag then
  14.          begin
  15.           k:=1;
  16.           write(s1,' ');
  17.          end;
  18.     End;
  19.  if k=0 then write('Таких слов нет')

Объяснение кода листинга программы

  1. Переменная k инициализируется значением byte.
  2. Выводится сообщение «Слова, в которых буквы упорядочены по алфавиту: ».
  3. Переменная k инициализируется значением 0.
  4. Строка temp1 инициализируется пустым значением.
  5. Запускается цикл While, условием которого является наличие пробелов в строке temp1.
  6. Внутри цикла происходит следующее:
    • Строка 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.
  7. Если значение переменной k равно 0, то выводится сообщение «Таких слов нет».

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы