Вывести все числа из текста в порядке следования - Turbo Pascal

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

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

Вот программа:
Листинг программы
  1. Program Maxim78; {Ященко М.Ю.}
  2. uses crt,interface1;
  3. const n=120;
  4. type mas=array[1..n] of string;
  5. var st:string;
  6. y,j,maxi,k,k1:integer;
  7. f,max:longint;
  8. g:mas;
  9. z,s:boolean;
  10. procedure vvod(var z:string);
  11. begin
  12. z:=z+'По сведениям Института 1 Прогнозов 4 надвигается 2 сильная жара. 54 Всё это 667 Б А сияло2 , шипело и полыхало жаром. ';
  13. writeln(z);
  14. end;
  15. procedure clova(s:string; var x:mas);
  16. var i:word;
  17. begin
  18. j:=1;{номер слова}
  19. i:=1;{номер символа в строке}
  20. while i<=length(s) do begin
  21. while (s[i]<>' ') and (s[i]<>',') and (s[i]<>'.') do begin
  22. x[j]:= x[j]+s[i];
  23. inc(i);
  24. end;
  25. while (s[i]=' ') or (s[i]=',') or (s[i]='.') and (i<=length(s)) do inc(i);
  26. inc(j);
  27. end;
  28. inc(j,-1);{кол-во получившихся слов}
  29. { for i:= 1 to j do writeln(x[i]);}
  30. end;
  31. procedure obrabotka(x:mas; p:string);
  32. var i:word; z:boolean;
  33. begin
  34. i:=1;
  35. for i:=1 to j do begin
  36. val(x[i],f,k) ;
  37. if k=0 then writeln(x[i]);
  38. Begin
  39. shapka(7,8);
  40. clrscr;
  41. writeln('Дан текст, содержаний, в том числе, и числа. вывести все числа из текста в порядке убывания. ');
  42. vvod(st);
  43. clova(st,g);
  44. for y:=1 to j do begin
  45. val(g[y],f,k1) ;
  46. if k1=0 then writeln(g[y]);
  47. end;
  48. writeln;
  49. pravoeokno;
  50. obrabotka(g,st);
  51. vivod;
  52. readkey;
  53. End.
Помогите пожалуйста. Из данного текста я выделил числа, но как теперь их упорядочить по убыванию? Процедурой val.

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

textual
Листинг программы
  1. procedure obrabotka(x:mas; p:string);
  2.    var i,h:word; z:boolean;
  3.   begin
  4.   i:=1;
  5.   s:=true;
  6.   max:=-f;
  7.   while s do begin
  8.              z:=false;
  9.   for i:=1 to j do begin
  10.                            val(x[i],f,k);
  11.                            if k=0 then
  12.                                     if f>max then begin
  13.                                                 max:= f;
  14.                                                 maxi:= i;
  15.                                                 z:=true;
  16.                                                end;
  17.                               end;
  18.                    if z=false then s:=false
  19.                               else begin
  20.                                     writeln(x[maxi]);
  21.                                     x[maxi]:='';
  22.                                    end;
  23.              max:=-max;
  24.              maxi:=0;
  25.            end;
  26.   end;

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

  1. В процедуре obrabotka объявлены три переменные: i, h и z. Переменная i инициализируется значением 1, переменная h устанавливается в значение -f, а переменная z устанавливается в значение true.
  2. Затем начинается цикл while, который выполняется до тех пор, пока значение переменной s остается истинным. Внутри цикла устанавливается значение переменной z в false.
  3. Далее следует вложенный цикл for, который выполняется от 1 до j (предполагается, что j - это некоторая величина). Внутри цикла выполняется вызов функции val(x[i],f,k), где x[i] - это i-ый элемент массива x, f - это переменная, которая получает значение, соответствующее i-ому элементу массива x, а k - это переменная, которая получает значение, соответствующее i-ому элементу массива x, если этот элемент является числом.
  4. Если k равно нулю, то значение переменной f увеличивается на максимальное значение, которое было найдено до этого (это значение хранится в переменной max). Также устанавливается значение переменной maxi равным i. Значение переменной z устанавливается в true.
  5. После окончания вложенного цикла for, если значение переменной z остается false, то значение переменной s устанавливается в false. Иначе, выводится значение переменной maxi (то есть, выводится последний найденный максимум). Значение переменной maxi устанавливается в 0. Значение переменной max устанавливается в -max.

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


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

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

12   голосов , оценка 4.333 из 5

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

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

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