Задача 3 Урок 17

Задача 3 Урок 17

Пользователь вводит произвольную строку, посчитайте количество чисел в ней - тех, что больше 125. Например, в строке:

123ret34#2145esrt5

такое число только одно и это:

2145

(сначала выделите эти числа из строки и запишите их в массив (of integer), а затем уже посчитайте число тех, что больше 125)

var i,k,N, Code,count: integer;
    s: string;
    f: boolean;
    xArr: array[1..20] 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
    begin
      Val(xArr[i], N, Code);
      if ((N >= 125) and (code = 0)) then
        count := count + 1;
    end;
  writeln(count);
  readln();
end.  
vedro-compota's picture

разбить на подпрограммы

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

type inArr = array[1..20] of string;
var i, k, N, Code,count: integer;
    s: string;
    f: boolean;
    xArr: array[1..20] of string;

procedure counter(var xArr:inArr);
  begin
    for i := low(xArr) to high(xArr) do
      begin
        Val(xArr[i], N, Code);
        if ((N >= 125) and (code = 0)) then
          count := count + 1;
      end;
  end;

procedure finder(var s:string);
  begin
    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;
  end;

begin
  writeln('vvedi stoky');
  readln(s);
  k:=1;
  finder(s);
  counter(xArr);
  writeln(count);
  readln();
end. 
vedro-compota's picture

сразу получать массив чисел

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

type inArr = array[1..20] of integer;
var i, k, N, Code,count: integer;
    s: string;
    f: boolean;
    xArr: array[1..20] of integer;
    num: array[1..20] of string;
procedure counter(var xArr:inArr);
  begin
    for i := low(xArr) to high(xArr) do
      begin
        if (xArr[i] >= 125) then
          count := count + 1;
      end;
  end;

procedure finder(var s:string);
  begin
    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
          num[k]:= num[k] + s[i];
      end;
    for i := low(xArr) to high(xArr) do
      begin
        Val(num[i], N, Code);
        xArr[i] := N;
      end;
  end;

begin
  writeln('vvedi stoky');
  readln(s);
  k:=1;
  finder(s);
  counter(xArr);
  writeln(count);
  readln();
end.   
vedro-compota's picture

засчитано

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