Задача 6 Урок 16

Задача 6 Урок 16

Пользователь вводит строку произвольных символов, выделите из неё массив первых 8 строковых литералов, которые являются числами. И выведите эти числа на экран.
Например, из строки:

rew2@#$$#435tr353453t4er4

должны быть выделены подстроки:

2
435
353453
4
4
var i,k: integer;
    s: string;
    a: array[1..8] of string;
begin
  writeln('vvedi stoky');
  readln(s);
  k := 1;
  for i := 1 to length(s) do
    if((s[i] >= '0') and (s[i] <= '9')) then
      begin
        a[k] := a[k] + s[i];
      end
    else if((s[i+1] >= '0') and (s[i+1] <= '9') and (k < 9)) then
      begin
        k:=k+1;
      end;
  for i := low(a) to high(a) do
    writeln(a[i]);
  readln();
end.   
vedro-compota's picture

попробовать решить без проверки следующего числа

_____________
матфак вгу и остальная классика =)

var i: integer;
    s: string;
    f: boolean;
begin
  writeln('vvedi stoky');
  readln(s);
  for i := 1 to length(s) do
    begin
      if((s[i] >= '0') and (s[i] <= '9')) then
        f:=true
      else if(f) then
        begin
          writeln();
          f:=false;
        end;
      if (f) then
        write(s[i])  ;
    end;
  readln();
end.     
vedro-compota's picture

числа надо сохранять в массив

_____________
матфак вгу и остальная классика =)

var i,k: integer;
    s: string;
    f: boolean;
    xArr: array[1..8] of string;
begin
  writeln('vvedi stoky');
  readln(s);
  k:=1;
  for i := 1 to length(s) do
    begin
      if((s[i] >= '0') and (s[i] <= '9')) then
        f:=true
      else if(f) then
        begin
          k := k + 1;
          f := false;
        end;
      if (f) then
        xArr[k] := xArr[k] + s[i];
    end;
  for i := low(xArr) to high(xArr) do
    writeln(xArr[i]);
  readln();
end.            
vedro-compota's picture

решение засчитано

_____________
матфак вгу и остальная классика =)