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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2009, 13:16   #1
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию Алгоритм заполнения квадратной матрицы по спирали

Всем добрый день!
Такая вот задачка:
Создать алгоритм, заполняющий квадратную матрицу, начиная с центрального элемента по спирали.(размерность матрицы нечетная 5х5,7х7)
например n=3 m=3

9 |2 3
8 1 4
7 6 5

1 - центральный єлемент матрицы
beregok вне форума Ответить с цитированием
Старый 15.01.2009, 15:08   #2
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Код:
program d8;

uses
  crt;

const
  Max = 11;

var
  n, m: byte;
  center: byte;
  i: byte;
  indN, indM: byte;
  Arr: array[1..Max, 1..Max] of integer;

begin
  clrscr;
  writeln('vvedite razmernost'' massiva < 11 ');
  repeat
    readln(n);
  until odd(n) and (n > 1) and (n < 11);

  m := n;

  Randomize;

  center := n div 2 +1;
  i := 0;

  Arr[center, center] := Random(100);
  while i <> center - 1 do
  begin
    inc(i);
    indN := center - i;
    for indM := center to center + i do
      Arr[indN, indM] := Random(100);
    indM := center + i;
    for indN := center - i + 1 to center + i do
      Arr[indN, indM] := Random(100);
    indN := center + i;
    for indM := center + i - 1 downto center - i do
      Arr[indN, indM] := Random(100);
    indM := center - i;
    for indN := center + i - 1 downto center - i do
      Arr[indN, indM] := Random(100);
    if i >= 2 then
    begin
      indN := center - i;
      for indM := center - i + 1 to center - 1 do
        Arr[indN, indM] := Random(100);
    end;
  end;
  for indN := 1 to n do
  begin
    for indM := 1 to m do
      write(Arr[indN, indM], ' ');
    writeln;
  end;
  readln;
end.
MalexG вне форума Ответить с цитированием
Старый 15.01.2009, 15:23   #3
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

ну теоретически можно сделать цикл выполняющийся пока не наткнулся на край матрицы (или пока матрица не заполнена):
  • каждый такт меняется направление сдвига координат на 90 градусов
  • каждые два такта увеличивается на один длина ряда заполнения
  • начало с центральной заполненной ячейки
свободен...
wall66 вне форума Ответить с цитированием
Старый 15.01.2009, 16:56   #4
beregok
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 13
По умолчанию

спасибо
попробую в сишке реализовать
beregok вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка матрицы по спирали {pascal} Влдислаав3911 Помощь студентам 3 10.04.2012 22:05
Чтение матрицы по спирали AlexLAN Общие вопросы C/C++ 1 21.12.2008 07:50
транспонирование квадратной матрицы 777UFO777 Общие вопросы Delphi 1 04.12.2008 19:31
Определитель квадратной матрицы Tomoyo Помощь студентам 22 04.11.2008 22:37