Напишите программу, которая высчитывает количество матчей и очков. Сортирует массив по убыванию количества произведенных побед
Для исходных данных и результата обработки используется двумерный массив game, количество строк которого на единицу больше, чем количество команд, а количество столбцов на два больше, чем видов результатов матчей. Дополнительные два столбца используются для хранения вычислительного количества матчей и очков, а дополнительная строка – как буфер при обмене строк во время сортировки строк таблицы.
Решение: Program sport; const NC=7; {число команд} Var team: array[1..NC+1] of string[30]; {команда} game: array[1..NC+1, 1..5] of integer; {кол-во матчей, побед, ничьих} m: integer; i, j: integer; begin team[1]: =’Алания ’; team[2]: =’Динамо ’; team[3]: =’Зенит ’; team[4]: =’Локомотив ’; team[5]: =’Ростсельмаш’; team[6]: =’Ротор ’; team[7]: =’Спартак ’; writeln (‘Для каждой команды в одной строке введите через пробел’); writeln (‘число побед, ничьих и поражений и нажмите < Enter> ’); writeln; for i: =1 to NC do begin write (team[i], ‘à ’); readln (game[i, 2], game[i, 3], game[i, 4]); end; {подсчет кол-ва матчей и очков} for i: =1 to NC do begin game[i, 1]: =game[i, 2]+game[i, 3]+game[i, 4]; {кол-во матчей} game[i, 5]: =game[i, 2]*3+game[i, 3]; {кол-во очков} end; {сортировка таблицы} for i: =1 to NC-1 do begin {найти строку, в которой максимальное количество очков} m: =i; for j: =i+1 to NC do if game[j, 5]> game[m, 5] then m: =j; {обменяем i-ю строку с m-й} team[NC+1]: =team[i]; team[i]: =team[m]; team[m]: =team[NC+1]; for j: =1 to 5 do begin game[NC+1, j]: =game[i, j]; game[i, j]: =game[m, j]; game[m, j]: =game[NC+1, j]; end; end; {вывод итоговой таблицы} writeln; writeln (‘**Итоговая таблица**’); writeln (‘---------------------------------------------------------------------------------‘); writeln (‘ Команда Матчей Побед Ничьих Пораж. Очков’); writeln (‘---------------------------------------------------------------------------------‘); for i: =1 to NC do begin write (i: 2, ‘.’, team[i]); for j: =1 to 5 do write (game[i, j]: 7); writeln; end; writeln (‘--------------------------------------------------------------------------------‘); writeln (‘Для завершения нажмите < Enter> ’); readln; end. Пример работы программы: Для каждой команды в одной строке введите через пробел число побед, ничьих и поражений и нажмите < Enter> Алания -> 5 6 4 Динамо -> 1 9 5 Зенит -> 8 6 1 Локомотив -> 6 5 4 Ростсельмаш -> 6 6 3 Ротор -> 5 8 2 Спартак -> 9 4 2 **Итоговая таблица**
Для решения нажмите < Enter> Задание для самостоятельного решения:
|