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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2009, 11:01   #1
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
Радость Преобразовать код...

Собственно задачу которую я приводил ниже я уже решил, но не могу никак разобраться с одним ньюансом:
{Выводим номера команд, абсолютных победителей}
Код:
pok:=1;
for i:=1 to n do 
 begin
  for j:=2 to n do
    begin
    if tabl[i,j]=2 then inc(pok);
    end;
      if pok=5 then Writeln('Komandy ne imeushie porageniya:',i);
 end;
то есть здесь матрица проверяется на наличием абсолютных победителей, то есть тех у кого в строке только одни 2-ки и диагональный ноль, мой код выше работает но при условие такой матрицы:
0 2 2
2 0 2
2 2 0
Он показывает что победитель у нас 1, но это не так, их 3... помогите преобразовать код! пожалуйста!
CodeExpert вне форума Ответить с цитированием
Старый 09.11.2009, 11:15   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

попробуй так:

Код:
const n=3;//это если матрица 3x3
var i,j: Integer;

pok:=0;//сначала никого не выбираем
for i:=1 to n do 
begin
   for j:=1 to n do if tabl[i,j]=2 then pok:=pok+1;//вот только теперь начинаем считать
   if(pok=5)then Writeln('Komandy ne imeushie porageniya:',i);
end;
Замечание модератора: Используйте тег [CODE]
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось Rembo; 09.11.2009 в 11:51.
NetSpace вне форума Ответить с цитированием
Старый 09.11.2009, 11:18   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Думаю тебе нужно суммировать строку и если сумма< (2*(кол-во колонок-1)) то никак команда не победитель иначе ок.

P.S. ну зачем кросспостить, писал бы в своей старой теме...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.11.2009, 16:00   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

собственно вот что у меня получилось 2CodeExpert - может ник по скромнее выбрать)
Код:
{турнирная таблица ---футбол}
uses Crt;
const n=5;
var
  s:array[1..n,1..n] of Integer; // турнирная таблицы
  s1:array[1..n] of Integer;  // вспомогательный массив
  sp:array[1..n] of string[15];// массив с командами
  i,j,k,l:Integer;
  tmp:string;
  f:Boolean;
begin
  k:=0;
  for i:=1 to n do // заполняем массив названий команд
    begin
      writeln('input name of football team #',i:4);
      readln(sp[i]);
    end;
  clrscr;
  Randomize;
  Writeln('-------------TEAMS---------------');
  for i:=1 to n do // выводим массив названий команд
      writeln(i:4,'   ',sp[i]);
  Writeln('-------------TABLE---------------');
  for i:=1 to n do begin
    for j:=1 to n do
      begin
        s[i,j]:=random(3); // заполняем турнирную таблицу  случайными числами[0..2];
        s1[i]:=0;         // обнуляем вспомогательный массив
       if i<>j then write (s[i,j]:6)
          else write('':5,'-');  // выводим таблицу
      end;
    Writeln;
  end;
  Writeln('--------------------------------');

    {Список команд выигравших > половины игр}
  Writeln('---This team''s win in half of games---' );
  for i:=1 to n do
    for  j:= 1 to n do begin
      if i<>j then
        if (s[i,j]=2)   // если у команды в строке 2
          then  inc(s1[i]);          // увеличиваем на 1 соответствующий элемент массива s1
        if (s[j,i]=0)  // если в столбце 0
          then  inc(s1[i]);     // увеличиваем на 1 соответствующий элемент массива s1
    end;
  writeln;
  for i:=1 to n do
    if s1[i]>=(n-1) then begin
      inc(k);
      write(sp[i],'  -  ',s1[i]);
      Writeln;
    end;
  if k=0 then writeln('NO');
  Writeln('--------------------------------------');
  k:=0;

  {Список команд без поражений }
  Writeln('---this team''s without lost---' );
  for i:=1 to n  do
   s1[i]:=0;
  for i:=1 to n  do
    for j:=1 to n  do
      if i<>j then  begin
        if (s[i,j]<>0)  then  // если у команды в строке не 0
          inc(s1[i]);        // увеличиваем на 1 соответствующий элемент массива s1
        if (s[j,i]<>2) then   // если у команды в столбце не 2
          inc(s1[i]);        // увеличиваем на 1 соответствующий элемент массива s1
      end;
  writeln;
    for i:=1 to n do
      if s1[i]=(2*n-2) then begin
        inc(k);
        writeln(s1[i]:4,sp[i]);
      end;
  if k=0 then writeln('NO');
  Writeln;
  Writeln('-----------------------' );

  {рейтинг по убыванию}
  Writeln('---RATING---' );
  for i:=1 to n  do
    s1[i]:=0;
  for i:=1 to n do
    for j:=1 to n do
      if i<>j then begin
        inc(s1[i],s[i,j]);
        Dec(s1[i],s[j,i]);
      end;
  l:=n;
  repeat
    f:=false;
    for i:=1 to l-1 do
      if s1[i]<s1[i+1] then begin
        k:=s1[i];
        s1[i]:=s1[i+1];
        s1[i+1]:=k;
        tmp:=sp[i];
        sp[i]:=sp[i+1];
        sp[i+1]:=tmp;
        f:=true;
      end;
    l:=l-1;
  until not f;
  for i:=1 to n do
      Writeln(sp[i],'':(20-Length(sp[i])),s1[i]:8);
  Writeln('-------End!!!-------');
  readln;
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать код SeRhy HTML и CSS 1 17.08.2008 15:50
преобразовать Delphi код в assembler rip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 12.05.2008 15:46
преобразовать код С++ в С++.Net Alek86 Общие вопросы .NET 4 01.10.2007 12:00
ПРЕОБРАЗОВАТЬ malevich Общие вопросы Delphi 1 07.12.2006 21:08