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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2008, 16:15   #1
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию матрица

Помогите с задачкой,если не трудно!Начиная с центра,обойти по спирали все элементы квадратной матрицы размером 13*13(распечатывая их в порядке обихода)
Verochka вне форума Ответить с цитированием
Старый 23.11.2008, 16:41   #2
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

поясни, их на экран надо выводить в таком порядке? И на чем надо написать?
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 23.11.2008, 20:40   #3
Verochka
Пользователь
 
Регистрация: 18.11.2008
Сообщений: 16
По умолчанию

Это нужно в Delphi сделать!ну я думаю,что да-их надо напечатать!
Verochka вне форума Ответить с цитированием
Старый 23.11.2008, 22:42   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот алгоритм на Паскале, переделаете в Делфи.
Код:
const n=13;
var a:array[1..n,1..n]of byte;
    x,y,k,z:integer;
begin
for x:=1 to n do
  begin
    for y:=1 to n do
      begin
        a[x,y]:=n*(x-1)+y;{для наглядности заполняем как таблицу умножения}
        write(a[x,y]:5);
      end;
    writeln;
  end;
x:=7;y:=7;k:=0; {начинаем с середины, конечный автомат равен нулю}
for z:=1 to n*n do {от 1 до 169}
  begin
    write(a[x,y],' '); {выводим очередной элемент}
    case k mod 4 of 
    0:begin  {если остаток от деления к на 4=0} 
      dec(y);  {уменьшаем у, идем вверх}
      if (x-1)=y then inc(k);{если номер строки-1=номеру столбца, увеличиваем автомат}
      end;
    1:begin  {если остаток от деления к на 4=1} 
       inc(x);  {увеличиваем х, идем вправо}
       if(n-x+1)=y then inc(k);
       end;
    2:begin
      inc(y);  {увеличиваем у, идем вниз}
      if(n-x)=(n-y) then inc (k);
      end;
    3:begin
      dec(x);  {уменьшаем х, идем влево}
      if y=(n-x+1) then inc(k);
      end;
    end;
  end;
readln
end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица {C++} Влдислаав3911 Помощь студентам 1 28.05.2008 02:36
Матрица Droid Общие вопросы Delphi 7 06.05.2008 20:14
Матрица Cartman18 Помощь студентам 4 13.12.2007 19:49
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01