Аллина
|
|
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 |
|
08.06.2008, 21:46 | |
Ответы с готовыми решениями:
9
Заполнить квадратную матрицу единицами по спирали
Заполнить массив первыми N натуральными числами |
![]() 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 |
большое спасибо за помощь!просто огромное спасибо!выручил
|
09.06.2008, 21:30 | |
Помогаю со студенческими работами здесь
10
Заполнить матрицу по спирали.
Заполните матрицу n×n числами от 1 до n2 по спирали из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |