Вывести все числа из текста в порядке следования - Turbo Pascal
Формулировка задачи:
Вот программа:
Помогите пожалуйста. Из данного текста я выделил числа, но как теперь их упорядочить по убыванию? Процедурой val.
Листинг программы
- Program Maxim78; {Ященко М.Ю.}
- uses crt,interface1;
- const n=120;
- type mas=array[1..n] of string;
- var st:string;
- y,j,maxi,k,k1:integer;
- f,max:longint;
- g:mas;
- z,s:boolean;
- procedure vvod(var z:string);
- begin
- z:=z+'По сведениям Института 1 Прогнозов 4 надвигается 2 сильная жара. 54 Всё это 667 Б А сияло2 , шипело и полыхало жаром. ';
- writeln(z);
- end;
- procedure clova(s:string; var x:mas);
- var i:word;
- begin
- j:=1;{номер слова}
- i:=1;{номер символа в строке}
- while i<=length(s) do begin
- while (s[i]<>' ') and (s[i]<>',') and (s[i]<>'.') do begin
- x[j]:= x[j]+s[i];
- inc(i);
- end;
- while (s[i]=' ') or (s[i]=',') or (s[i]='.') and (i<=length(s)) do inc(i);
- inc(j);
- end;
- inc(j,-1);{кол-во получившихся слов}
- { for i:= 1 to j do writeln(x[i]);}
- end;
- procedure obrabotka(x:mas; p:string);
- var i:word; z:boolean;
- begin
- i:=1;
- for i:=1 to j do begin
- val(x[i],f,k) ;
- if k=0 then writeln(x[i]);
- Begin
- shapka(7,8);
- clrscr;
- writeln('Дан текст, содержаний, в том числе, и числа. вывести все числа из текста в порядке убывания. ');
- vvod(st);
- clova(st,g);
- for y:=1 to j do begin
- val(g[y],f,k1) ;
- if k1=0 then writeln(g[y]);
- end;
- writeln;
- pravoeokno;
- obrabotka(g,st);
- vivod;
- readkey;
- End.
Решение задачи: «Вывести все числа из текста в порядке следования»
textual
Листинг программы
- procedure obrabotka(x:mas; p:string);
- var i,h:word; z:boolean;
- begin
- i:=1;
- s:=true;
- max:=-f;
- while s do begin
- z:=false;
- for i:=1 to j do begin
- val(x[i],f,k);
- if k=0 then
- if f>max then begin
- max:= f;
- maxi:= i;
- z:=true;
- end;
- end;
- if z=false then s:=false
- else begin
- writeln(x[maxi]);
- x[maxi]:='';
- end;
- max:=-max;
- maxi:=0;
- end;
- end;
Объяснение кода листинга программы
- В процедуре obrabotka объявлены три переменные: i, h и z. Переменная i инициализируется значением 1, переменная h устанавливается в значение -f, а переменная z устанавливается в значение true.
- Затем начинается цикл while, который выполняется до тех пор, пока значение переменной s остается истинным. Внутри цикла устанавливается значение переменной z в false.
- Далее следует вложенный цикл for, который выполняется от 1 до j (предполагается, что j - это некоторая величина). Внутри цикла выполняется вызов функции val(x[i],f,k), где x[i] - это i-ый элемент массива x, f - это переменная, которая получает значение, соответствующее i-ому элементу массива x, а k - это переменная, которая получает значение, соответствующее i-ому элементу массива x, если этот элемент является числом.
- Если k равно нулю, то значение переменной f увеличивается на максимальное значение, которое было найдено до этого (это значение хранится в переменной max). Также устанавливается значение переменной maxi равным i. Значение переменной z устанавливается в true.
- После окончания вложенного цикла for, если значение переменной z остается false, то значение переменной s устанавливается в false. Иначе, выводится значение переменной maxi (то есть, выводится последний найденный максимум). Значение переменной maxi устанавливается в 0. Значение переменной max устанавливается в -max.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д