Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА и П.doc
Скачиваний:
23
Добавлен:
29.08.2019
Размер:
13.34 Mб
Скачать

Решение:

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

**Итоговая таблица**

Команда

Матчей

Побед

Ничьих

Пораж.

Очков

1. Спартак

15

9

4

2

31

2. Зенит

15

8

6

1

30

3. Ростсельмаш

15

6

6

3

24

4. Локомотив

15

6

5

4

23

5. Ротор

15

5

8

2

23

6. Алания

15

5

6

4

21

7. Динамо

15

1

9

5

12

Для решения нажмите <Enter>

Задание для самостоятельного решения:

Напишите программу, которая высчитывает количество матчей и очков. Сортирует массив по убыванию количества произведенных побед.

Решение задачи производится аналогично предыдущей. Для исходных данных и результата обработки используется двумерный массив hockey, количество строк которого на единицу больше, чем количество команд, а количество столбцов на два больше, чем видов результатов матчей. Дополнительные два столбца используются для хранения вычислительного количества матчей и очков, а дополнительная строка – как буфер при обмене строк во время сортировки строк таблицы.

Команды

Матчей

Побед

Ничьих

Поражений

Очков

Гомель

5

2

0

Керамин

0

5

5

Гомель-2

7

0

1