Урок 17. Задача №6. Решение.
Primary tabs
Урок 17. Задача №6.
Решите предыдущую задачу:
Пользователь вводит в консоль строки вида (имя + произвольное число пробелов + балл):
Вася 485 Коля 555 Юра 61 .......... .... end // признак завершения ввода(пока не введёт строку end) -- где слева указаны имена участников, а справа -- число баллов.
Используя массив строк и массив целых чисел (пусть оба массива будут максимальной длины = 3) считайте отдельно имена и баллы и определите победителя, выведя его имя и полученный им балл.
С использованием процедуры, которая разбирала бы очередную строку, изменяя по ссылке значения двух перемененных (одна для имени и одна для балла) -- уже после вызова этой процедуры для очередной строке записывая очередные значения переменных в массивы (каждую в свой).
type StrMyArr = array[1..3] of string; IntMyArr = array[1..3] of integer; procedure ChangeRes(c: string; var numb: integer; var name: string); var tmp: string; q: integer; begin if(c <> 'end') then begin for q := 1 to length(c) do begin if(c[q] >= '0') and (c[q] <= '9') then tmp += c[q] else name += c[q]; end; end; val(tmp, numb); end; function SearchMax(y: integer; arr: IntMyArr): integer; var f: integer; begin y := arr[1]; for f := 2 to length(arr) do if(y < arr[f]) then y := arr[f]; result := y; end; procedure printResult(x: integer; int_arr: IntMyArr; str_arr: StrMyArr); begin if(x = int_arr[1]) then begin writeln('And winner is...:'); writeln(str_arr[1], x); end else if(x = int_arr[2]) then begin writeln('And winner is...:'); writeln(str_arr[2], x); end else begin writeln('And winner is...:'); writeln(str_arr[3], x); end; end; var str, Name: string; arrName: StrMyArr; arrInt: array [1..3] of integer; max, j, i, k, point: integer; begin writeln('If you enter the word "end" step on next program! '); writeln(); writeln('Enter your name: enter your points: '); while(str <> 'end') do begin readln(str); ChangeRes(str, point, Name); j += 1; arrInt[j] := point; k += 1; arrName[k] := Name; Name := ''; end; max := SearchMax(max, arrInt); writeln(); printResult(max, arrInt, arrName); readln(); // Удержание консоль end.// Завершение программы
- Log in to post comments
- 1141 reads