Задача 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
- 566 reads