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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2008, 18:34   #11
Foky
Пользователь
 
Регистрация: 14.03.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
а если будет матрица 6x6, как быть?
Ыы Шутка?) для главной диагонали:
1 2 3 4 5 6
1 5 9 9 9 9
3 9 2 5 8 5
4 6 9 8 7 0
5 6 8 5 8 5
7 0 5 0 0 0

1 1 3 4 5 7
2 5 9 6 6 0
3 9 2 9 8 5
4 9 5 8 5 0
5 9 8 7 8 0
6 9 5 0 5 0
Foky вне форума Ответить с цитированием
Старый 03.04.2008, 23:35   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Так хотелось спросить,
а что будет, если матрица будет 7x7 ?.. :-D
а потом - 8x8... :-) но удержусь... или зря? надо спросить?.. :-D

Ладно. Теперь серьёзно.
если не сильно забивать себе голову оптимизацией и прочим, то можно сделать так:

Код:
const
  n = 6;
var
  A : array[1..N,1..N] of Integer;
  i,j,k : integer;
  
begin
  {заполним матрицу случайными числами}
  Randomize;
  for i:=1 to N do begin
    for j:=1 to N do begin
      A[i,j] := Random(10);  {числа  [0..9]}
      Write(A[i,j]:3);
    end;
    WriteLn;
  end;

  {********** собственно сама программа *****************}

  {в цикле будут перебираться все элементы левее (и выше )
     дополнительной диагонали}

  for i:=1 to N-1 do
    for j:=1 to N-i do begin
      {для A[i,j] симметричный элемент внизу справа будет
                A[N-j+1,  N-i+1] }
      if A[i,j] <> A[N-j+1, N-i+1] then begin
        {если не равны - меняем местами}
        k := A[i,j];
        A[i,j] := A[N-j+1, N-i+1];
        A[N-j+1, N-i+1] := k;
      end;
    end;


  {всё - выводим результат}
  Writeln('-------------- результат -------------');
  for i:=1 to N do begin
    for j:=1 to N do begin
      Write(A[i,j]:3);
    end;
    WriteLn;
  end;
  Readln;

end.
Ну, теперь жмите мне на репутацию! :-)))
И Пиво грузите и высылайте бочками... :-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.04.2008, 21:33   #13
МаксимNEWProgramm
Пользователь
 
Аватар для МаксимNEWProgramm
 
Регистрация: 04.04.2008
Сообщений: 57
По умолчанию

Как вы поняли несимметричные относительно побочной диагонали.
Как бы вы не поняли! Решений много

Можно взять и роменять эленты диагонали которая лежит рорядка +1 по строке или +1 по столбцу отдалена $$$
Программированине-это не очередная пара, а искуство показать себя!!!
МаксимNEWProgramm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните программу Принц Общие вопросы C/C++ 2 31.05.2008 10:26
объясните код Rend1 Общие вопросы Delphi 18 01.02.2008 14:52
Объясните, пожалуйста смысл строки - res=d.year > year ? -1: (d.year < year? 0:1) Fynj Помощь студентам 2 17.12.2007 17:50