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