Урок 17 (Решенная задача номер 3)

Урок 17 (Решенная задача номер 3)

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

123ret34#2145esrt5

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

2145

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

type
    myarr = array of integer;
var s : string;

function ru36(j : string): myarr;

var a : array[1..100] of integer;
      g: string;
      i, v, c, h: integer;
begin
  h := 1;
  for i := 1 to length(s) do
  begin
    if (s[i] >= '0') and (s[i] <= '9') then
      g := g + s[i];
      if (s[i] >= '0') and (s[i] <= '9') and (s[i+1] > '9') or (i = length(s))  then
      begin
        val(g, v, c);
        a[h] := v;
        g := '';
        Inc(h);
     end;
  end;
  for i := 1 to (h - 1) do
    if (a[i] > 125) then
      writeln(a[i]);
end;
begin
  writeln('vvedite stroky');
  readln(s);
  ru36(s);
end.
vedro-compota's picture

замечания:

  1. функция ничего не возвращает по факту, при этом указано что возвращает массив
  2. функция не должна ничего печатать в консоль, а должна возвращать результат

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

Romakip's picture

var s : string;

function ru36(j : string): integer;

var a : array[1..100] of integer;
      g: string;
      i, v, c, h, shet: integer;
begin
  h := 1;
  for i := 1 to length(s) do
  begin
    if (s[i] >= '0') and (s[i] <= '9') then
      g := g + s[i];
      if (s[i] >= '0') and (s[i] <= '9') 
          and (s[i+1] > '9') or (i = length(s))  then
      begin
        val(g, v, c);
        a[h] := v;
        g := '';
        Inc(h);
     end;
  end;
  for i := 1 to (h - 1) do
    if (a[i] > 125) then
      Inc(shet);
  result := shet;
  write(result);
end;
begin
  writeln('vvedite stroky');
  readln(s);
  ru36(s);
end.
vedro-compota's picture

Замечание:
1) Дублирование проверок в if
2) При переборе до последнего индекса:

to length(s) do

обращаться к элементу:

 s[i+1]

некорректно

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

Romakip's picture

var s : string;

function CiselBolse125(j : string): integer;

var a : array[1..100] of integer;
      g: string;
      i, v, c, h, shet: integer;
begin
  h := 1;
  for i := 1 to length(s) do
  begin
    if (s[i] >= '0') and (s[i] <= '9') then
      g := g + s[i];
      if (s[i] > '9') or (i = length(s))  then
      begin
        val(g, v, c);
        a[h] := v;
        g := '';
        Inc(h);
     end;
  end;
  for i := 1 to (h - 1) do
    if (a[i] > 125) then
      Inc(shet);
  result := shet;
  write(result);
end;
begin
  writeln('vvedite stroky');
  readln(s);
  CiselBolse125(s);
end.