Ввод, обработка и сортировка двумерного массива — Pascal(Паскаль)

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>');
end.

Leave a Comment

86 − 82 =