Аллина
1

Заполнить квадратную матрицу натуральными числами по спирали

08.06.2008, 21:46. Показов 9204. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
составить программу,которая заполняет квадратную матрицу порядка n нутуральными числами 1,2,3,...n,записывая их в нее "по спирали"
например,для n=5 получаем матрицу:

1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2008, 21:46
Ответы с готовыми решениями:

Прямоугольную матрицу заполнить последовательными чётными натуральными числами "по спирали" .
а) составить блок-схему алгоритма решения; б) написать реализующую алгоритм программу на языке...

Заполнить квадратную матрицу единицами по спирали
Помогите решить, пожалуйста!!!=-O Заполнить квадратную матрицу NxN единицами ('1') по спирали...

Заполнить массив натуральными числами
Заполнить массив различными натуральными числами, квадраты которых заканчиваются данными числами....

Заполнить массив первыми N натуральными числами
Напишите подпрограмму, которая заполняет массив первыми N натуральными числами. Размер массива...

9
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
08.06.2008, 21:53 2
По-моему,надо говорить "пожалуйста".
https://www.cyberforum.ru/visu... d3621.html
То же самое на си.
0
Аллина
08.06.2008, 22:00 3
извини пожалуйста!я с си не разбираюсь!мне нужно на паскале!сделай если не сложно !пожалуйста
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
08.06.2008, 22:15 4
Извини,но мне это сложно.мало времени.Я переделал синтаксис,удали комментарии сама - я не помню,как они выглядят в паскале.А может,я вообще все неправильно сделал,я на паскале не работаю.

int A[n][n];
int i:=1,j,k,p:=n/2;
for k:=1 to p do begin/*Цикл по номеру витка*/
for j:=k-1 to n-k do begin i:=i+1; A[k-1][j]:=i; end/*Определение значений верхнего гор столбца*/
for j:=k to n-k do begin i:=i+1; A[j][n-k]:=i; end/* --//-- По правому вертикальному столбцу*/
for j:=n-k-1;downto k-1 do begin i:=i+1; A[n-k][j]:=i; end;/* --//-- по нижнему горизонтальному столбцу*/
for j:=n-k-1;downto k do begin i:=i+1; A[j][k-1]:=i;/* --//-- по левому вертикальному столбцу*/
end
if (n mod 2 =1) A[p][p]=n*n;
0
Аллина
08.06.2008, 22:18 5
ну ладно!если будут проблемы по си можно обратиться?
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
08.06.2008, 22:20 6
о,да,я точно все сделал все неправильно. забыл,что в паскале все нумеруется с единицы,а не с нуля.Жди,может,кто-нибудь другой переделает,я занят

Добавлено через 43 секунды
Обратиться с проблемами по си можно,если ты не будешь вопить "реши срочно"
ICQ 200-885-014
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
08.06.2008, 22:55 7
Вот на Паскале для любого размера. Сначала матрица заполняется по порядку, потом величина элементов увеличивается или уменьшается по определенным правилам. Разбирайся.
Код
[SIZE=2]
uses crt;
var a:array[1..20,1..20]of integer;
n,i,j:integer;
x,y,number,add,direction:integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=i*10+j;
x:=0;
y:=1;
number:=1;
Add:=n;
direction:=1;
while (add<>0) do
begin
i:=0;
while (i<>Add) do
begin
x:=x+direction;
a[y,x]:=number;
number:=number+1;
i:=i+1;
end;
i:=0;
Add:=Add-1;
while (i<>Add) do
begin
y:=y+direction;
a[y,x]:=number;
number:=number+1;
i:=i+1;
end;
direction:=direction*(-1);
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln
end.
[/SIZE]
0
Аллина
09.06.2008, 16:32 8
помоги разобраться а то препод придрался к каждой переменой!помоги разобраться пожалуйста
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
09.06.2008, 21:24 9
Очень трудно заочно рассказать этот алгоритм, его надо пошагово показывать на реальной матрице. Попробую пояснить суть переменных на примере матрицы 5х5
var a:array[1..5,1..5]of integer;//сама матрица
n:integer; //размерность матрицы
i,j:integer; //счетчики при создании массива
x– номер столбца
y– номер строки
number– числа в матрице 1,2,3 . . . 25
add– длина пути по строке или по столбцу.
Сначала она = 5 в первой строке, потом = 4 вниз по последнему столбцу, влево по последней строке, потом = 3 вверх по первому столбцу и влево по второй строке потом =2 вниз по 4 столбцу и влево по четвертой строке потом =1 это числа 24 и 25.
Direction– это шаг, равный +1, если идем вправо по строке, или вниз по столбцу, и -1, если идем влево по строке, или вверх по столбцу. При каждом шаге, хоть +1, хоть -1, увеличивается number, от 1 до 25, а в зависимости чему на данный момент равны х и у, следующее число попадает на нужное место.
Счетчик i во второй части программы, не то что в первой, он управляет величиной add, когда счетчик i становится равным add, мы поворачиваем на 90 градусов. Ну больше не знаю как написать. Нарисуйте пустую матрицу и с программой в руках по одному числу заполните матрицу, как показывает программа, сколько шагов и в какую сторону сделать. Иначе не сможете объяснить.
0
Аллина
09.06.2008, 21:30 10
большое спасибо за помощь!просто огромное спасибо!выручил
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2008, 21:30
Помогаю со студенческими работами здесь

Заполнить матрицу по спирали.
http://************.com/files/4x9alup5f вот ссылка на рисунок по которому заполняется матрица!!!...

Заполнить матрицу по спирали.
Добрый вечер. Нужно составить массив 7х7 из чисел от 1 до 49, вот такой. 1 2 3 4 5 6 7 24...

Заполнить матрицу n на n по спирали
Задание : Заполнить матрицу n на n следующим образом (пустые клетки заполняются 0) Не могу...

Заполните матрицу n×n числами от 1 до n2 по спирали из файла
Ребят,помогите пожалуйста. Хотел бы на паскале... 1.Заполните матрицу n×n числами от 1 до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru