Урок 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
- 340 reads