Урок 17. Задача 6.

Урок 17. Задача 6.

Пользователь вводит строку произвольных символов, выделите из неё массив первых 8 строковых литералов, которые являются числами. И выведите эти числа на экран.
Например, из строки: 'rew2@#$$#435tr353453t4er4'
должны быть выделены подстроки:

2
435
353453
4
4
var  s :string;
     i :integer;
     fl :boolean;
     
function issdigit(s :string) :boolean;
begin
  if (s >= '0') and (s <= '9') then
      fl := true
    else
      fl := false;
  issdigit := fl;
end;

begin
  s := 'rew2@#$$#435tr353453t4er4';
  for i := 1 to length(s) do
  begin
    if issdigit(s[i]) then
    begin
      write(s[i]);
      if not issdigit(s[i + 1]) then
        writeln();
    end;
  end;  
end.
vedro-compota's picture

нужно выделить первые 8 литералов подходящего типа

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

type ar = array[1..8] of string;
var  s :string;
     i :integer;
     fl :boolean;
     arS : ar;

function issdigit(s :string) :boolean;
begin
  if (s >= '0') and (s <= '9') then
      fl := true
    else
      fl := false;
  issdigit := fl;
end;

function array_filling(s :string) :ar;
var i, j :integer;
    sA :string;
    fl_2 :boolean;
    arS : ar;
begin
  fl_2 := false;
  j := 1;
  for i := 1 to length(s) do
  begin
    if issdigit(s[i]) then
    begin
      fl_2 := true;
      sA := sA + (s[i]);
    end
    else
      if fl_2 then
      begin
        arS[j] := sA;
        j := j + 1;
        sA := '';
        fl_2 := false;
      end;
    if j = 9 then
      break;
  end;
  arS[j] := sA;
  array_filling := arS;
end;

begin
  s := 'rew2@#$$#435tr353453t4er4';
  arS := array_filling(s);
  for i := 1 to high(arS) do
    writeln(arS[i]);
  readln();
end. 
vedro-compota's picture

переписать без использования логической переменно fl_2

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

type ar = array[1..8] of string;
var  s :string;
     i :integer;
     fl :boolean;
     arS : ar;

function issdigit(s :string) :boolean;
begin
  if (s >= '0') and (s <= '9') then
      fl := true
    else
      fl := false;
  issdigit := fl;
end;

function array_filling(s :string) :ar;
var i, j :integer;
    sA :string;
    arS : ar;
begin
  sA := '';
  j := 1;
  for i := 1 to length(s) do
  begin
    if issdigit(s[i]) then
      sA := sA + (s[i])
    else
      if (sA <> '') then
      begin
        arS[j] := sA;
        j := j + 1;
        sA := '';
      end;
    if j = 9 then
      break;
  end;
  arS[j] := sA;
  array_filling := arS;
end;

begin
  s := 'rew2@#$$#435tr353453t4er4';
  arS := array_filling(s);
  for i := 1 to high(arS) do
    writeln(arS[i]);
  readln();
end.  
vedro-compota's picture

засчитано

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