Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.01.2010, 02:46
Midmal Midmal вне форума
Прохожий
 
Регистрация: 22.08.2009
Сообщения: 41
Репутация: 10
Восклицание Заполнение квадратичной матрицы

Прошу помочь составить программу, которая заполняет квадратичную матрицу порядка n2 натуральными числами 1, 2, 3 ... n2, записывая их в неё "по спирали"!
P.S: Помоги кто может пожалуйста в составлении такой программы на Delphi (С описанием)
Ответить с цитированием
  #2  
Старый 10.01.2010, 03:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Предлагаю обмен. Вы мне помогаете кран отремонтировать, я вам помогаю программу написать.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 10.01.2010, 03:47
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Интересная задачка)
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TDirection = (dRight, dDown, dLeft, dUp);

const
  CCOLSROWS = 5;

var
  A:Array [1..CCOLSROWS, 1..CCOLSROWS] of Integer;
  Len, i, Index, x, y, c:Integer;
  Direction:TDirection;

begin
  //Подготовимся
  Index:=1;
  Len:=CCOLSROWS-1;
  x:=1;
  y:=1;
  Direction:=dRight;
  A[x,y]:=Index;
  c:=0;
  
  //заполняем массив
  while (Len > 0) do
    begin
    for i:=1 to Len do
      begin
      Inc(Index);
        case Direction of
          dRight: Inc(x);
          dDown:  Inc(y);
          dLeft:  Dec(x);
          dUp:    Dec(y);
        end;
      A[x,y]:=Index;
      end;
    Inc(c);
    if c = 3 then
      begin
      Dec(Len);
      c:=1;
      end;
    if Direction = dUp then Direction:=dRight
      else Direction:=Succ(Direction);
    end;

  //и выводим результат
  for y:=1 to CCOLSROWS do
    begin
    for x:=1 to CCOLSROWS do
      Write(StringOfChar(' ',5-Length(IntToStr(A[x,y])))+IntToStr(A[x,y]));
    Writeln;
    end;

  Readln;
end.
Ответить с цитированием
  #4  
Старый 10.01.2010, 07:30
Midmal Midmal вне форума
Прохожий
 
Регистрация: 22.08.2009
Сообщения: 41
Репутация: 10
Печаль

"Asinkrit" спасибо вам за наглядный пример, а можно побольше описаний и комментарий?
Просто мне для курсовой надо...
Ответить с цитированием
  #5  
Старый 10.01.2010, 13:01
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Что тебе конкретно непонятно? Тут и разжовывать то нечего..
Ответить с цитированием
  #6  
Старый 10.01.2010, 22:48
Midmal Midmal вне форума
Прохожий
 
Регистрация: 22.08.2009
Сообщения: 41
Репутация: 10
По умолчанию

"Asinkrit" я это и сам понимаю, но препод докопался до всякой мелочи.
Можешь предоставить "Алгоритм (Блок схему с описаниями)"???
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025