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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 00:25   #1
Vesnushka18
 
Регистрация: 25.03.2008
Сообщений: 7
По умолчанию Двумерные массивы в Delphi

Здравствуйте!
Подскажите пожалуйста как решит следующую задачу:
В данном двумерном массиве найдите элементы, для которых соответствующая строка и колонка равны между собой Определите наибольший общий делитель всех таких элементов.

Другими словами дана матрица размера nxn, необходимо определить есть ли в ней одинаковые строки и столбцы и взять элементы стоящие на пересечении равных столбца и строки.
Например матрица:
1 2 3 4
5 1 4 7
0 4 2 3
4 3 0 8
получается что первая строка и второй столбец равны(элемент =2); третья строка и третий столбец тоже равны (элемент= 2).
Не могу понять как написать цикл который сравнивает строки и столбцы и запоминает нужные элементы.
Заранее спасибо за помощь.
Vesnushka18 вне форума Ответить с цитированием
Старый 08.04.2011, 11:21   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
получается что первая строка и второй столбец равны(элемент =2); третья строка и третий столбец тоже равны (элемент= 2).
Не только. Еще первая строка и первый столбец равны. Сумма = 10.
Цитата:
Не могу понять как написать цикл который сравнивает строки и столбцы и запоминает нужные элементы.
Для запоминания элементов надо ввести второй массив, в котором хранить нужные элементы. Цикл будет выглядеть так:
Код:
  l:=0;
  i:=1;
  While i <= 4  do
  Begin
    Sum:=0;
    For j:=1 to 4 do Sum:=Sum+Mas[i,j];
    q:=1;
    Sum1:=0;
    While q <= 4 do
    Begin
      For p:=1 to 4 do Sum1:=Sum1+Mas[p,q];
      If Sum = Sum1 then
      Begin
        Inc(l);
        Vekt[l]:=Mas[i,q];
        Sum1:=0
      End;
      Sum1:=0;
      Inc(q);
    End;
    Inc(i)
  End;
  If l > 0 then
  Begin
    Writeln('Polucheny elementy: ');
    For i:=1 to l do Write(Vekt[i]:3);
    Writeln
  End
  Else
  Writeln('Elementy ne naydeni');
Вам осталось определить наибольший общий делитель
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 08.04.2011, 18:00   #3
Vesnushka18
 
Регистрация: 25.03.2008
Сообщений: 7
По умолчанию

Спасибо, но что за сумма? Мне не нужно находить ни какую сумму, только определить какие строки и столбцы равны и запомнить элементы стоящие на их пересечении.
Vesnushka18 вне форума Ответить с цитированием
Старый 08.04.2011, 19:55   #4
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
только определить какие строки и столбцы равны и запомнить элементы стоящие на их пересечении.
Так?
Код:
Var
  Mas:array[1..4,1..4] of Byte;
  Vekt:array[1..10] of Byte;
  i,j,p,q,l:Byte;
  Mn:Set of Byte;
  Flag:Boolean;
Begin
  //Вводите массив
   i:=1;
  l:=0;
  Mn:=[];
  While i <= 4 do
  Begin
    For j:=1 to 4 do Include(Mn,Mas[i,j]);
    q:=1;
    Flag:=False;
    While q <= 4 do
    Begin
      For p:=1 to 4 do
      If  Not (Mas[p,q] in Mn) then
      Begin
        Flag:=True;
        Break
      End;
      If  Flag = False then
      Begin
        Inc(l);
        Vekt[l]:=Mas[i,q];
      end;
      Flag:=False;
      Inc(q)
    End;
    Mn:=[];
    Inc(i)
  End;
  For i:=1 to l do Write(Vekt[i],' ');
  Readln;
End.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 08.04.2011, 21:20   #5
Vesnushka18
 
Регистрация: 25.03.2008
Сообщений: 7
По умолчанию

не знаю, не могу разобраться в вашей программе, не знаю что такое set of :-( проще ни как не получится?
Vesnushka18 вне форума Ответить с цитированием
Старый 09.04.2011, 10:43   #6
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
не знаю что такое set of
Это тип множество. Смотри любой учебник по Pascal.
Цитата:
проще ни как не получится?
Возможно, можно и проще. Это всего лишь мое видение решения этой задачи. Вы можете воспользоваться им или предложить свой вариант кода. С радостью на него посмотрю.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерные массивы delphi qweqwe4815 Помощь студентам 0 23.12.2009 23:51
Двумерные массивы(Delphi) Дешук Елена Помощь студентам 9 15.12.2009 16:13
Двумерные массивы в Delphi The riddle Помощь студентам 5 31.05.2009 17:26