Задание 6 урок 18
Primary tabs
Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):Вася 485 Коля 555 Юра 61end // признак завершения ввода
(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины =3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла), уже после вызова этой процедуры для очередной строки записывайте очередные значения переменных в массивы (каждую в свой).
Подсказка: Т.е. такая процедура может иметь следующую сигнатуру:procedure getData(str: string; var name: string; var ball: integer);
type arrStr = array[1..3] of string; arrInt = array[1..3] of integer; var Z,B: arrStr; A: arrInt; i,k, C:integer; S:string; procedure ResultGame(Z1: string; var Name: string; var ball: integer); var count, Code, i: integer; Chislo: string; begin Chislo := ''; Name := ''; ball := 0; count := 0; for i := 1 to length(Z1) do begin if (Z1[i]>= '0') and (Z1[i]<= '9') then begin Chislo := Chislo + Z1[i]; //строка значений val(Chislo, ball, Code); end else if (Z1[i] = ' ') then begin Chislo := ''; end else if (Code <> 0) and (Z1[i] <> ' ') then begin Name := Name + Z1[i]; end; end; end; procedure Arrs(Z2: arrStr; var B1: arrStr; var A1: arrInt); var i, ball: integer; StrName: string; begin StrName := ''; ball := 0; for i := 1 to 3 do begin ResultGame(Z2[i], StrName, ball); //вызов процедуры: Результаты writeln('Имя: ', StrName, ', счёт: ', ball, ';'); B1[i] := StrName; A1[i] := ball; end; end; begin //блок ввода данных участников i := 0; writeln('vvedite list of members and balls'); while (S <> 'end') do begin i:=i +1; readln(S); if i <= 3 then Z[i] := S; //запись строки в массив строк end; Arrs(Z, B, A); //вызов процедуры: Запись в массивы //Блок определения победителя k := 0; //переменная индексов участников C := 0; //переменная результатов for i := 1 to 3 do begin if A[i] > C then begin k := i; //индекс участника с наибольшим баллом C := A[i]; end; end; writeln('Winner ', B[k], ', count: ', C); readln(); end.
- Log in to post comments
- 773 reads
vedro-compota
Wed, 12/29/2021 - 18:15
Permalink
засчитано
засчитано
_____________
матфак вгу и остальная классика =)