Заменить goto на процедуру - Pascal ABC

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

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

Доброе время суток. Подскажите пожалуйста, как заменить goto на процедуру. Код готовый, нужно только отредактировать, нашел тут на форуме похожий пример, но не совсем понял его. Заменять на if ... then... else?
Листинг программы
  1. program qqq;
  2. uses crt;
  3. label 1,2,3,4;
  4. var a:string; i,j,n,max,k:integer; x,s:array[1..100] of string;
  5. begin
  6. clrscr;
  7. readln(a);
  8. readln(k);
  9. i:=1;
  10. n:=1;
  11. for j:=1 to 100 do
  12. begin
  13. x[j]:=''; s[j]:='';
  14. end;
  15. while i<=length(a) do
  16. begin
  17. if a[1]=' ' then goto 3 else goto 2;
  18. 2:if (a[i]=' ') and (a[i+1]<>' ') then n:=n+1;
  19. repeat
  20. x[n]:=x[n]+a[i];
  21. i:=i+1;
  22. if a[i]=' ' then goto 2;
  23. if i>length(a) then goto 4;
  24. until a[i]<>' ';
  25. 3:repeat
  26. if a[i]<>' ' then goto 2;
  27. i:=i+1;
  28. if i>length(a) then goto 4;
  29. until a[i]=' ';
  30. end;
  31. 4:for j:=1 to n do
  32. for i:=1 to length(x[j]) do
  33. if x[j][i]<>' ' then s[j]:=s[j]+x[j][i];
  34. for i:=1 to n do
  35. if length(s[i])<k then writeln(s[i]);
  36. readkey;
  37. end.

Решение задачи: «Заменить goto на процедуру»

textual
Листинг программы
  1. program qqq;
  2. uses crt;
  3. var a,s:string;
  4.     k,i,j,n:integer;
  5. begin
  6. clrscr;
  7. writeln('Введите строку из слов, разделенных пробелами');
  8. readln(a);
  9. write('Введите число К для поиска слов короче К k=');
  10. readln(k);
  11. writeln('Слова короче ',k,' символов');
  12. n:=0;
  13. i:=1;
  14. while i<=length(a) do
  15. if (a[i]<>' ')or((i=1)and(a[i-1]=' ')) then
  16.  begin
  17.   j:=i;
  18.   s:='';
  19.   while(j<=length(a))and(a[j]<>' ') do
  20.    begin
  21.     s:=s+a[j];
  22.     j:=j+1;
  23.    end;
  24.   if length(s)<k then
  25.    begin
  26.     writeln(s);
  27.     n:=1;
  28.     end;
  29.   i:=i+length(s);
  30.  end
  31. else i:=i+1;
  32. if n=0 then write('Таких слов нет');
  33. readkey;
  34. end.

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

  1. Программа объявлена как qqq.
  2. Используется библиотека crt.
  3. Переменные a и s объявлены как строки (тип string).
  4. Переменные k, i, j, n объявлены как целые числа (тип integer).
  5. С помощью функции clrscr() очищается экран.
  6. Пользователю предлагается ввести строку из слов, разделенных пробелами.
  7. Пользователю предлагается ввести число К для поиска слов короче К.
  8. Выводится сообщение о том, какие слова будут найдены.
  9. Переменная n инициализируется значением 0.
  10. Переменная i инициализируется значением 1.
  11. Запускается цикл while, который выполняется, пока i меньше или равно длине строки a.
  12. Внутри цикла проверяется, является ли текущий символ в строке a непустым.
  13. Если текущий символ в строке a не является пустым, то переменной j присваивается значение i+1.
  14. Переменной s присваивается значение пустой строки (''').
  15. Запускается вложенный цикл while, который выполняется, пока j меньше или равно длине строки a и текущий символ в строке a не является пустым.
  16. Внутри вложенного цикла к переменной s добавляется текущий символ из строки a.
  17. После окончания вложенного цикла переменная j увеличивается на 1.
  18. Если длина строки s меньше или равна значению переменной k, то выводится строка s.
  19. Если длина строки s меньше k, то переменная n инициализируется значением 1.
  20. Цикл while завершается.
  21. Если переменная n равна 0, то выводится сообщение о том, что таких слов нет.
  22. Вызывается функция readkey(), чтобы пользователь мог нажать любую клавишу.

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


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

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

11   голосов , оценка 3.727 из 5

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

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

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