Урок 16 (решенная задача номер 5)

Урок 16 (решенная задача номер 5)

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

Например, из строки:

rew2@#$$#435tr353453t4er4

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

2
435
353453
4
4
var arr: array[1..8] of string;
    s : string;
    i, c, h : integer;
begin
  c := 1;
  h := 1;
  writeln('vvedite stroky');
  readln(s);
  while (h <> length(s)) do
    begin
     if (s[h] >= '0') and (s[h] <= '9') and (c <= 8) then
      begin
        while (s[h] >= '0') and (s[h] <= '9') do
         begin
          arr[c] := arr[c] + s[h];
          h := h + 1;
         end;
       Inc(c);
      end;
     h := h + 1;
    end;
  for i := 1 to 8 do
    write(arr[i], ' ');
end.
vedro-compota's picture

Добавить оптимизацию с break

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

Romakip's picture

var arr: array[1..8] of string;
    s : string;
    i, c, h : integer;
begin
  c := 1;
  h := 1;
  writeln('vvedite stroky');
  readln(s);
  while (h <> length(s)) do
    begin
     if (s[h] >= '0') and (s[h] <= '9') and (c <= 8) then
      begin
        while (s[h] >= '0') and (s[h] <= '9') do
         begin
          arr[c] := arr[c] + s[h];
          h := h + 1;
         end;
       Inc(c);
      end
     else if (c = 8) then break;
     h := h + 1;
    end;
  for i := 1 to 8 do
    write(arr[i], ' ');
end.