Pascal Урок 17 Задача 6
Primary tabs
Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485
Коля 555
Юра 61
..........
....
end // признак завершения ввода
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:
program U15Z6;
type
a=array[1..3] of integer;
b=array[1..3] of string;
var
t:b;
l:a;
i,d,f,n,max,ball: integer;
w,k,s,name:string;
procedure Nameball(s: string; var name: string; var ball: integer);
begin
for i:= 1 to length(s) do
begin
if (s[i]>='0')and(s[i]<='9') then
begin
w:=w+s[i];
val(w,f);
ball:=f;
end
else if (s[i]<>' ') then
begin
k:=k+s[i];
name:=k;
end;
end;
w:='';
k:='';
end;
begin
d:=1;
while (s<>'end') do
begin
readln(s);
Nameball(s,name,ball);
t[d]:=name;
l[d]:=ball;
d:=d+1;
end;
for d:= low(l) to high(l) do
begin
if l[d] > max then
begin
max:=l[d];
inc(n);
end;
end;
d:=n;
writeln('Pobeditel: ',t[d]);
writeln('S kolichestvom ballov: ',max);
readln();
end.
- Log in to post comments
- 1485 reads
vedro-compota
Wed, 08/05/2020 - 19:10
Permalink
A B C D
-- имя победителя определиться неправильно (В вместо C)
_____________
матфак вгу и остальная классика =)
JimATI
Thu, 08/06/2020 - 17:50
Permalink
Исправленно
program U15Z6; type a=array[1..3] of integer; b=array[1..3] of string; var t:b; l:a; i,d,f,n,max,ball: integer; w,k,s,name:string; procedure Nameball(s: string; var name: string; var ball: integer); begin for i:= 1 to length(s) do begin if (s[i]>='0')and(s[i]<='9') then begin w:=w+s[i]; val(w,f); ball:=f; end else if (s[i]<>' ') then begin k:=k+s[i]; name:=k; end; end; w:=''; k:=''; end; begin d:=1; while (s<>'end') do begin readln(s); Nameball(s,name,ball); t[d]:=name; l[d]:=ball; d:=d+1; end; for d:= low(l) to high(l) do begin if l[d] > max then begin max:=l[d]; n:=d; end; end; d:=n; writeln('Pobeditel: ',t[d]); writeln('S kolichestvom ballov: ',max); readln(); end.