Задача 8 Урок 18
Primary tabs
Задача 8 Урок 18 Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
type myarr = array[1..300] of integer; myarr1 = array[1..300] of string; var s, name : string; bal, o, u,i : integer; letters :myarr1; numbers : myarr; procedure writearray(h : string; var sname : string; var sbal : integer); var i, c : integer; g: string; begin g:=''; for i:=1 to length(h) do begin val(h[i], sbal, c); if (c<>0) then sname := sname + h[i]; if (h[i] >= '0') and (h[i] <= '9') then g := g + h[i]; val(g, sbal, c); end; end; procedure winner(var letters : myarr1; var a12 : myarr); begin if (a12[1]>a12[2]) and (a12[1]>a12[3]) then writeln ('winner',' ', letters[1],a12[1]); if (a12[2]>a12[1]) and (a12[2]>a12[3]) then writeln ('winner',' ', letters[2],a12[2]); if (a12[3]>a12[1]) and (a12[3]>a12[2]) then writeln ('winner',' ', letters[3],a12[3]); end; begin o := 1; repeat writeln('enter the line'); readln(s); if s='end' then break; writearray(s, name, bal); letters[o] := name; numbers[o] := bal; Inc(o); name := ''; until s='end'; for i:=1 to o do writeln (letters[i],numbers[i]); winner(letters,numbers); readln(); end.
Вывод консоли:
enter the line Vovan 55 enter the line Ilia 77 enter the line pasha 100 enter the line end Vovan 55 Ilia 77 pasha 100 0 winner pasha 100
- Log in to post comments
- 332 reads