Урок 17 (решенная задача номер 5)
Primary tabs
Урок 17 (решенная задача номер 5)
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
var s, Namepobed: string;
balpobed : integer;
procedure ru36(h : string);
var bal, i, c: integer;
name, g: string;
begin
for i := 1 to length(h) do
begin
if (h[i] <> '') and (h[i] > '9') then
name := name + s[i];
if (h[i] >= '0') and (h[i] <= '9') then
g := g + s[i];
if (i = length(h)) then
val(g, bal, c);
end;
writeln('imy ', name);
writeln('colicestvo ballov - ', bal);
if (bal > balpobed) then
begin
balpobed := bal;
Namepobed := name;
end;
end;
begin
while (s <> 'end') do
begin
writeln('vvedite stroky');
readln(s);
if (s <> 'end') then
ru36(s);
end;
writeln('Pobeditel - ', Namepobed);
writeln('Ego kol-vo ballov sostavilo ', balpobed);
end.(С Использованием массивов)
type myarr = array[1..3] of integer;
miarr = array[1..4] of string;
var s : string;
o : integer;
glStrMassiv : miarr;
glCisMassiv : myarr;
procedure ru36(h : string; var a : myarr; var m : miarr; j : integer);
var bal, i, c: integer;
name, g: string;
begin
for i := 1 to length(h) do
begin
if (h[i] <> '') and (h[i] > '9') then
name := name + s[i];
if (h[i] >= '0') and (h[i] <= '9') then
g := g + s[i];
if (i = length(h)) then
val(g, bal, c);
end;
a[j] := bal;
m[j] := name;
Inc(j);
end;
procedure ru37(a : myarr; m : miarr);
begin
if (a[1] > a[2]) and (a[1] > a[3]) then
writeln('Pobeditel - ', m[1],' ', 'ego kol-vo ballov - ', a[1])
else if (a[2] > a[3]) then
writeln('Pobeditel - ', m[2],' ', 'ego kol-vo ballov - ', a[2])
else writeln('Pobeditel - ', m[3],' ', 'ego kol-vo ballov - ', a[3]);
end;
begin
o := 1;
while (s <> 'end') and (o <= 3) do
begin
writeln('vvedite stroky');
readln(s);
if (s <> 'end') and (o <= 3) then
ru36(s, glCisMassiv, glStrMassiv, o);
Inc(o);
end;
ru37(glCisMassiv, glStrMassiv);
end.
- Log in to post comments
- 2520 reads
vedro-compota
Sun, 10/18/2020 - 21:10
Permalink
поменять названия процедурам
поменять названия процедурам
_____________
матфак вгу и остальная классика =)
Romakip
Mon, 10/19/2020 - 16:31
Permalink
Исправлено
type myarr = array[1..3] of integer; miarr = array[1..4] of string; var s : string; o : integer; glStrMassiv : miarr; glCisMassiv : myarr; procedure VicislenieBallov(h : string; var a : myarr; var m : miarr; j : integer); var bal, i, c: integer; name, g: string; begin for i := 1 to length(h) do begin if (h[i] <> '') and (h[i] > '9') then name := name + s[i]; if (h[i] >= '0') and (h[i] <= '9') then g := g + s[i]; if (i = length(h)) then val(g, bal, c); end; a[j] := bal; m[j] := name; Inc(j); end; procedure OperedelPoditely(a : myarr; m : miarr); begin if (a[1] > a[2]) and (a[1] > a[3]) then writeln('Pobeditel - ', m[1],' ', 'ego kol-vo ballov - ', a[1]) else if (a[2] > a[3]) then writeln('Pobeditel - ', m[2],' ', 'ego kol-vo ballov - ', a[2]) else writeln('Pobeditel - ', m[3],' ', 'ego kol-vo ballov - ', a[3]); end; begin o := 1; while (s <> 'end') and (o <= 3) do begin writeln('vvedite stroky'); readln(s); if (s <> 'end') and (o <= 3) then VicislenieBallov(s, glCisMassiv, glStrMassiv, o); Inc(o); end; OperedelPoditely(glCisMassiv, glStrMassiv); end.