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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 18:45   #1
lebrosha
Пользователь
 
Аватар для lebrosha
 
Регистрация: 21.05.2009
Сообщений: 36
Вопрос Заполнение матрицы Pascal

Помогите с квадратной матрицой. Нужно заполнить матрицу целыми числами змейкой с правого верхнего конца к левому нижнему.
Вообще должно получиться что-то вроде этого:
6 5 1 0
12 7 4 2
13 11 8 3
15 14 10 9
заранее благодарен.
Найди цель, ресурсы найдутся.
lebrosha вне форума Ответить с цитированием
Старый 25.05.2009, 19:43   #2
werser
Форумчанин
 
Регистрация: 11.06.2007
Сообщений: 233
По умолчанию

Может вы имеете введу:
4 3 2 1 0
5 6 7 8 9
14 13 12 11 10
15 16 17 18 19
24 23 22 21 20

С правого верхнего до левого нижнего змейкой.
werser вне форума Ответить с цитированием
Старый 25.05.2009, 19:53   #3
lebrosha
Пользователь
 
Аватар для lebrosha
 
Регистрация: 21.05.2009
Сообщений: 36
По умолчанию

нет, именно так как показанно в матрице
Найди цель, ресурсы найдутся.
lebrosha вне форума Ответить с цитированием
Старый 25.05.2009, 19:55   #4
lebrosha
Пользователь
 
Аватар для lebrosha
 
Регистрация: 21.05.2009
Сообщений: 36
По умолчанию

вот процедура которая заполняет матрицу, наоборот, с легого верхнего до павого нижнего.

Код:
procedure Fill(var a:TMatrix;n:integer);
var i,j,x,f,k : integer;
    l         : boolean;
    d         : real;
begin {Fill}
  l:=false;
  for k:=1 to sqr(n) do
  begin
    f:=k;
    If f>(n*(n+1)/2) then
    begin
      l:=true;
      f:=sqr(n)+1-f;
    end;
    D:=sqrt(1+4*(2*f-1));
    x:=trunc((-1+D)/2);
    If x mod 2 = 0 then
    begin
      j:=n-x-1+(f-((x+1)*x)div 2);
      i:=f-((x+1)*x)div 2;
    end
    else
    begin
      j:=n-(f-((x+1)*x)div 2)+1;
      i:=x+2-(f-((x+1)*x)div 2);
    end;
    if l then
    begin
      i:=n+1-i;
      j:=n+1-j;
    end;
    a[i,j]:=k-1;
  end;
    end; {Fill}
вот тока никак не могу в ней разобраться и переделать под себя.
Найди цель, ресурсы найдутся.
lebrosha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение матрицы Pedro Помощь студентам 3 22.04.2009 23:53
[Pascal] заполнение двумерного массива Рамик Помощь студентам 13 18.02.2009 20:08
заполнение матрицы в паскале evilguy Помощь студентам 2 07.02.2009 22:28
создание и заполнение матрицы Blad47 Общие вопросы C/C++ 6 13.12.2008 16:38
Pascal. Заполнение массивов. Нужна помощь. blackberryx Помощь студентам 2 05.10.2008 21:11