Задача 5 Урок 18
Primary tabs
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут
максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
type arrString = array[1..3] of string;
arrInteger = array[1..3] of integer;
var fromStringArr: arrString = ('','','');
arrScore: arrInteger;
arrName: arrString;
function getStringArr(fromStringArr1: arrString): arrString;
var inputString: string;
loopCount: integer;
begin
loopCount := 0;
writeln('Введите результаты участников Имя Счет');
while (inputString <> 'end') do
begin
Inc(loopCount);
readln(inputString);
if loopCount <= 3 then
fromStringArr1[loopCount] := inputString;
end;
result := fromStringArr1;
end;
procedure getArrsForNameAndScore(fromStringArr1: arrString; var arrName1: arrString; var arrScore1: arrInteger);
var loopCountString{счетчик цикла}, loopCountArr, toInt{для преобразования в число},
newInt1, errorCode{код ошибки}: integer;
toStringNum, toStringName: string;
begin
toStringNum := '';
toStringName := '';
for loopCountArr := 1 to 3 do
begin
for loopCountString := 1 to length(fromStringArr1[loopCountArr]) do
begin
val(fromStringArr1[loopCountArr,loopCountString], toInt, errorCode);
if (errorCode = 0) then
begin
toStringNum := toStringNum + fromStringArr1[loopCountArr,loopCountString];
val(toStringNum, newInt1, errorCode);
end
else if (fromStringArr1[loopCountArr,loopCountString] = ' ') then
begin
toStringNum := '';
end
else if (errorCode <> 0) and (fromStringArr1[loopCountArr,loopCountString] <> ' ') then
begin
toStringName := toStringName + fromStringArr1[loopCountArr,loopCountString];
end;
end;
writeln('Имя: ', toStringName, ', счёт: ', newInt1, ';');
arrName1[loopCountArr] := toStringName;
arrScore1[loopCountArr] := newInt1;
toStringNum := '';
toStringName := '';
newInt1 := 0;
end;
end;
procedure lookForWinner(arrName1: arrString; arrScore1: arrInteger);
var loopCountArr, key, win: integer;
begin
key := 0;
win := 0;
for loopCountArr := 1 to 3 do
begin
if arrScore1[loopCountArr] > win then
begin
key := loopCountArr;
win := arrScore1[loopCountArr];
end;
end;
writeln('Победитель ', arrName1[key], ', со счетом: ', win);
end;
begin
fromStringArr := getStringArr(fromStringArr);
getArrsForNameAndScore(fromStringArr, arrName, arrScore);
lookForWinner(arrName, arrScore);
readln();
end.
КОНСОЛЬ
Введите результаты участников Имя Счет Вася 145 Петя 365 Женя 952 Игорь 563 Роман201 end Имя: Вася, счёт: 145; Имя: Петя, счёт: 365; Имя: Женя, счёт: 952; Победитель Женя, со счетом: 952
- Log in to post comments
- 690 reads