Урок 18 Задача 07
Primary tabs
Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:
procedure getData(str: string; var name: string; var ball: integer)
Решение:
program u18z07;
var s,s0,pobeditel,name:string;
i,j,Code,maxScore,ball:integer;
procedure abc123(s:string; var name:string; var ball:integer);
begin
j:=1;
for i:=1 to length(s) do
begin
if(s[i]>='0')and(s[i]<='9') then
s0:=s0+s[i]
else
begin
if s[i]<>' ' then
name:=name+s[i];
if s0<>'' then
begin
s0:='';
j:=j+1;
end;
end;
Val(s0,ball,Code);
end;
end;
begin
maxScore:=0;
while (s<>'end') do
begin
name:='';
writeln('Vvedite stroku');
readln(s);
abc123(s,name,ball);
if ball>maxScore then
begin
maxScore:=ball;
pobeditel:=name;
end;
end;
writeln('Pobedil ',pobeditel,' s rezultatom - ',maxScore);
readln();
end.
Консоль:
Vvedite stroku dima 123 Vvedite stroku maks 111 Vvedite stroku lena 222 Vvedite stroku end Pobedtel: lena | rezultat: 222
- Log in to post comments
- 451 reads