![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Прошу помочь составить программу, которая заполняет квадратичную матрицу порядка n2 натуральными числами 1, 2, 3 ... n2, записывая их в неё "по спирали"!
P.S: Помоги кто может пожалуйста в составлении такой программы на Delphi (С описанием) ![]() |
|
#2
|
||||
|
||||
|
Предлагаю обмен. Вы мне помогаете кран отремонтировать, я вам помогаю программу написать.
![]() |
|
#3
|
|||
|
|||
|
Интересная задачка)
Код:
{$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
|
|||
|
|||
|
"Asinkrit" спасибо вам за наглядный пример, а можно побольше описаний и комментарий?
Просто мне для курсовой надо... ![]() |
|
#5
|
|||
|
|||
|
Что тебе конкретно непонятно? Тут и разжовывать то нечего..
|
|
#6
|
|||
|
|||
|
"Asinkrit" я это и сам понимаю, но препод докопался до всякой мелочи.
Можешь предоставить "Алгоритм (Блок схему с описаниями)"??? ![]() |
|
#7
|
|||
|
|||
|
Я же не могу делать всю работу за тебя, так у тебя ничего не останется в голове от этой работы, если ты понимаешь алгоритм, то нарисовать план-схему для тебя будет нетрудно, ты начни, а я помогу.
Сам алгоритм прост, заполняем массив отрезками в определенном направлени, начиная с верхнего левого элемента, после заполнения каждого отрезка, меняем направление по часовой стрелке, попутно вычисляя длину следущего отрезка, до тех пор, пока длина отрезка не станет нулевой. |