Над главной диагональю квадратного массива 18х18 записаны результаты игр той или иной команды во встречах с другими командами в виде «3:1», «2:2», «0:1″и т.п. Для каждой команды определить количество выигрышей, кол-во ничьих и кол-во проигрышей- Pascal(Паскаль)

uses crt;
const n=18;
type St=record {запись}
x,y:byte; {поляцифр}
c:char; {поле для разделителя ":"}
end;
St1=array[1..n,1..n] of St; {тип2-мерныймассив записей}
var a,b:St1; {двамассива}
i,j,kv,kn,kp:byte;
 
procedureRev(p:St;varq:St);{процедура для перевертывания результата}
begin
q.x:=p.y;q.y:=p.x;q.c:=p.c; {меняемполяхиу}
end;
function Itog(s:St):byte; {функция для подсчета итогов}
begin
if s.x>s.y then Itog:=1 {если 3:0, выигрыш}
else if s.x<s.y then Itog:=0; { если 1:2, проигрыш }
end;
 
begin
clrscr;
randomize;
for i:=1 to n-1 do
for j:=1 to n-1 do
if j>=i then
begin
a[i,j].x:=random(5); {присваиваем полям случайные числа от 0 до 4}
a[i,j].y:=random(5); {можно меньше или больше}
a[i,j].c:=':';
Rev(a[i,j],b[j+1,i]); {переворачиваем результат для нижней части таблицы}
end;
writeln('Turnirnaja tablica bez glavnoj diagonali:');
for i:=1 to n do
begin
forj:=1 ton-1 do {главная диагональ не нужна, на ней нет результатов}
if j<=i-1 then write(b[i,j].x,b[i,j].c, b[i,j].y,' '){низтаблицы}
else write(a[i,j].x,a[i,j].c, a[i,j].y,' '); {верхтаблицы}
writeln;
end;
readln;
for i:=1 to n do
begin
kp:=0;kn:=0;kv:=0;
for j:=1 to n-1 do
begin
if (Itog(a[i,j])=0)or(Itog(b[i,j])=0) then kp:=kp+1;{суммапоражений}
if (Itog(a[i,j])=1)or(Itog(b[i,j])=1) then kv:=kv+1; {суммавыигрышей}
end;
writeln('U komandy ',i,' ',kv,' vyigr ',n-1-kv-kp,' nich ',kp,' poraz');
end;
readln;
end.

Leave a Comment

− 8 = 1