Из текста выбрать числа и записать в массив. Предполагается, что количество встречающихся чисел не более 10 — Pascal(Паскаль)

uses crt;
const cf=['0'..'9'];
       max=10;
var s,s1,s2:string;
    a:array[1..max] of string;
    n,i,j,k:byte;
begin
clrscr;
writeln('Введите текст, содержащий до 10 чисел:');
readln(s);
i:=1;n:=0;
while i<=length(s) do
if (s[i] in cf)and (not(s[i-1]in cf)or(i=1)) then{если цифра, а перед ней не цифра, или она первая}
 begin
  k:=i;s1:='';
  n:=n+1;
  while (s[k] in cf)and(k<=length(s))do {пока цифры и не конец строки}
   begin
    s1:=s1+s[k];
    k:=k+1;{идем вперед}
   end;
  a[n]:=s1; {пишем в новую строку}
  i:=i+length(s1);{перепрыгиваем}
 end
else i:=i+1;{иначе идем вперед}
writeln('Массив цифр:');
for i:=1 to n do
write(a[i],' ');
write(s2);
readln
end.

Следующий вариант

uses crt;
const cf=['0'..'9'];
       max=10;
var s,s1,s2:string;
    a:array[1..max] of integer;
    t,c:integer;
    n,i,j,k:byte;
begin
clrscr;
writeln('Введите текст, содержащий до 10 чисел:');
readln(s);
i:=1;n:=0;
while i<=length(s) do
if (s[i] in cf)and (not(s[i-1]in cf)or(i=1)) then{если цифра, а перед ней не цифра, или она первая}
 begin
  k:=i;s1:='';
  n:=n+1;
  while (s[k] in cf)and(k<=length(s))do {пока цифры и не конец строки}
   begin
    s1:=s1+s[k];
    k:=k+1;{идем вперед}
   end;
  val(s1,t,c);
  a[n]:=t; {пишем в новую строку}
  i:=i+length(s1);{перепрыгиваем}
 end
else i:=i+1;{иначе идем вперед}
writeln('Массив цифр:');
for i:=1 to n do
write(a[i],' ');
write(s2);
readln
end.

Leave a Comment

36 + = 43