Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 14:31   #1
Dobbos
Новичок
Джуниор
 
Регистрация: 03.06.2012
Сообщений: 2
По умолчанию АЛгоритм стыковки комманд. Паскаль.

Задание таково - вывести( и сохранять после каждого тура) таблицу результатов Футбольного чемпионата. Резулттаты матчей вводятся с клавиатуры. То есть по результатам матчей отсортрировать и вывести таблицу. А теперь сам вопрос.
Имеется 16 комманд. нужно организовать 15 матчей, чтобы каждая команда сыграла с каждой, и, естесвенно, матчи не повторялись. Это то, чего мне не хватает в программе, и мне нужно это, не могу никак сообразить алгоритм. Сейчас у меня матчи каждого следующейго тура зависят от результатов предыдущего, и естесвенно, могут повторяться и каждая комманда друг с другом не сыграет.
Код:
uses crt, dos;
type
 command=record
 nazv: string[9];
 ochki: integer;
 zgol: integer;
 pgol: integer;
 num: integer;
 end;
 
var
tabl: array[1..16] of command;
a, b: char;
i, k: integer;
out: text;
pp: string;
procedure qsort(l,r:integer);
var i, j: integer;
    w, q, b, c, d:integer;
    a:string;
begin
 i:=l; j:=r;
 q:=tabl[(l+r) div 2].ochki;
 repeat
  while (tabl[i].ochki>q) do inc(i);
  while (q>tabl[j].ochki) do dec(j);
  if (i<=j) then
   begin
    w:=tabl[i].ochki; tabl[i].ochki:=tabl[j].ochki; tabl[j].ochki:=w;
    a:=tabl[i].nazv; tabl[i].nazv:=tabl[j].nazv; tabl[j].nazv:=a;
    b:=tabl[i].zgol; tabl[i].zgol:=tabl[j].zgol; tabl[j].zgol:=b;
    c:=tabl[i].pgol; tabl[i].pgol:=tabl[j].pgol; tabl[j].pgol:=c;
    d:=tabl[i].num; tabl[i].num:=tabl[j].num; tabl[j].num:=d;
    inc(i); dec(j);
   end;
  until (i>j);
  if (l<j) then qsort(l, j);
  if (i<r) then qsort(i, r);
end;
 
 
begin
clrscr;
assign(out, 'tabl1.txt');
rewrite(out);
for i:=1 to 16 do tabl[i].num:=i;
tabl[1].nazv:='amkar';
tabl[2].nazv:='anzhi';
tabl[3].nazv:='volga';
tabl[4].nazv:='dinamo';
tabl[5].nazv:='zenit';
tabl[6].nazv:='krasnodar';
tabl[7].nazv:='krylia';
tabl[8].nazv:='kuban';
tabl[9].nazv:='loko';
tabl[10].nazv:='rostov';
tabl[11].nazv:='rubin';
tabl[12].nazv:='mspartak';
tabl[13].nazv:='nspar';
tabl[14].nazv:='terek';
tabl[15].nazv:='tom';
tabl[16].nazv:='cska';
for i:=1 to 16 do
 with tabl[i] do
  begin
   ochki:=0; zgol:=0; pgol:=0;
  end;
for k:=1 to 2 do
begin
writeln('vvedite rezultaty matchey ', k, ' tura');
for i:=16 downto 9 do
 begin
 writeln(tabl[i].nazv, ' vs ', tabl[16-i+1].nazv);
 if keypressed then a:=readkey;
 if a=#0 then a:=readkey;
 while ord(a)>ord('9') do
  begin
   writeln('neverniy format sheta, povtorite vvod dlya 1 kommandi');
   keypressed; a:=readkey;
  end;
 write(a);
 tabl[i].zgol:=tabl[i].zgol+ord(a)-ord('0');
 tabl[16-i+1].pgol:=tabl[16-i+1].pgol+ord(a)-ord('0');
 write('-');
 keypressed; b:=readkey;
 while ord(b)>ord('9') do
  begin
   writeln('neverniy format sheta, povtorite vvod dlya 2 kommandi');
   keypressed; b:=readkey;
   if b=#0 then b:=readkey;
  end;
 tabl[i].pgol:=tabl[i].pgol+ord(b)-ord('0');
 tabl[16-i+1].zgol:=tabl[16-i+1].zgol+ord(b)-ord('0');
 write(b);
 if a>b then tabl[i].ochki:=tabl[i].ochki+3 else
  if b>a then tabl[16-i+1].ochki:=tabl[16-i+1].ochki+3 else
   begin tabl[16-i+1].ochki:=tabl[16-i+1].ochki+1; tabl[i].ochki:=tabl[i].ochki+1 end;
 a:=#0; b:=#0;
 writeln;
 end;
qsort(1, 16);
writeln('resultaty etogo i predidushih turov mozhno prosmosret` v faile `tabl1.txt`');
writeln('on byl sozdan v kataloge s programmoy');
append(out);
writeln(out, 'tablica rezultatov posle ', k, ' tura');
writeln(out,'  comanda    ochki zabito propusk');
for i:=1 to 16 do writeln (out, tabl[i].nazv:9, ' ', tabl[i].ochki:6, ' ', tabl[i].zgol:6, ' ', tabl[i].pgol:7);
if k=1 then begin writeln('dlya vvoda rezul`tatov 2 tura nazhmite lubuiy klavishu'); readkey; end;
end;
close(out);
readln;
end.
Код рабочий, Только нужен другой алгоритм стыковки комманд.
Dobbos вне форума Ответить с цитированием
Старый 03.06.2012, 16:00   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Dobbos Посмотреть сообщение
Имеется 16 комманд. нужно организовать 15 матчей, чтобы каждая команда сыграла с каждой
Это принципиально невозможно.
s-andriano вне форума Ответить с цитированием
Старый 03.06.2012, 16:13   #3
Dobbos
Новичок
Джуниор
 
Регистрация: 03.06.2012
Сообщений: 2
По умолчанию

Не думал че писал. 15 ТУРОВ конечно.
Dobbos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекорды. Алгоритм. Паскаль zhenka619 Помощь студентам 1 16.02.2012 23:21
Алгоритм->Паскаль Toofy Паскаль, Turbo Pascal, PascalABC.NET 4 29.05.2011 17:40
Алгоритм Кнута — Морриса — Пратта. Ошибка!! Паскаль WizzzIDizzzI Помощь студентам 1 25.05.2011 16:46
Программа для удаленного пинга и выполнения комманд lexus22 Фриланс 9 23.07.2009 10:16