Урок 17. Задача №3. Решение.
Primary tabs
Пользователь вводит произвольную строку, посчитайте количество чисел в ней - тех, что больше 125. Например, в строке:
123ret34#2145esrt5такое число только одно и это:
2145(сначала выделите эти числа из строки и запишите их в массив (of integer), а затем уже посчитайте число тех, что больше 125).
type
myArr = array [1..4] of integer;
function inc_too(var b : integer): integer;
begin
b += 1;
result := b;
end;
function Check_tmp(s : string; var mas : myArr): myArr;
var a, k : integer;
begin
if(s <> '') then
begin
for k := low(mas) to high(mas) do
if(mas[k] = 0) then
begin
val(s, a);
mas[k] := a;
end;
end else
Exit;
result := mas;
end;
function Count_Arr(var z : integer; full_arr : myArr): integer;
var q : integer;
begin
for q := low(full_arr) to high(full_arr) do
if(full_arr[q] > 125) then
inc_too(z);
result := z;
end;
var str, tmp : string;
key : boolean;
i, j, c, conv : integer;
arr : myArr;
begin
writeln('Enter arbitrary string: ');
readln(str);
for i := 1 to length(str) do
begin
key := false;
if(str[i] >= '0') and (str[i] <= '9') then
tmp += str[i]
else
key := true;
if(key = true) and (tmp <> '') then
begin
val(tmp, conv);
j += 1;
arr[j] := conv;
tmp := '';
end;
end;
Check_tmp(tmp, arr);
Count_Arr(c, arr);
writeln('In your string quantity numbers > 125: ', c);
readln(); // Удержание консоль
end.// Завершение программы - Log in to post comments
- 3647 reads
vedro-compota
Sat, 05/16/2020 - 10:00
Permalink
надо или возвращать значения,
надо или возвращать значения, или передавать по ссылке.
_____________
матфак вгу и остальная классика =)
vedro-compota
Sat, 05/16/2020 - 10:06
Permalink
оптимальность
for k := low(mas) to high(mas) do if(mas[k] = 0) then-- не оптимально, передавайте в подпрограмму будущий индекс последнего элемента, на случай если он будет записан.
_____________
матфак вгу и остальная классика =)
Firons
Mon, 05/18/2020 - 17:53
Permalink
Исправлено.
type myArr = array [1..4] of integer; function inc_too(b: integer): integer; begin b += 1; result := b; end; function Check_tmp(s: string; mas: myArr): myArr; var a: integer; begin if(s <> '') then begin val(s, a); mas[4] := a; end; result := mas; end; function Count_Arr(z: integer; full_arr: myArr): integer; var q: integer; begin for q := low(full_arr) to high(full_arr) do if(full_arr[q] > 125) then z := inc_too(z); result := z; end; var str, tmp: string; key: boolean; i, j, c, conv: integer; arr: myArr; begin writeln('Enter arbitrary string: '); readln(str); for i := 1 to length(str) do begin key := false; if(str[i] >= '0') and (str[i] <= '9') then tmp += str[i] else key := true; if(key = true) and (tmp <> '') then begin val(tmp, conv); j += 1; arr[j] := conv; tmp := ''; end; end; Check_tmp(tmp, arr); writeln(); writeln('In your string quantity numbers > 125: ', Count_Arr(c, arr)); readln(); // Удержание консоль end.// Завершение программы