Форум программистов, компьютерный форум CyberForum.ru

Вывод матрицы по спирали изнутри - C++

Восстановить пароль Регистрация
 
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
16.05.2012, 19:49     Вывод матрицы по спирали изнутри #1
Помогите пожалуйста, кто может написать функцию вывода матрицы a[n][n] по спирали изнутри?
a0 a1 a2 a3 a4
a5 a6 a7 a8 a9
a10 a11 a12 a13 a14
a15 a16 a17 a18 a19
a20 a21 a22 a23 a24

Вывести: a12 a11 a16 a17 a18 a13 a8 a7 a6 a5 a10 a15 a20 и т.д до a0

Добавлено через 3 часа 29 минут
как думаете, препод такое не оценит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
const int row=5;
const int col=5;
int i,j;
int mas[row][col]={{25,24,23,22,21},{10,9,8,7,20},{11,2,1,6,19},{12,3,4,5,18},{13,14,15,16,17}};
for (i=row/2;i<row-1;i++)
    for (i==row/2?j=col/2:j=1;i==row/2?j>0:j<col-1;i==row/2?j--:j++)
        cout<<mas[i][j]<<endl;
for (i=row/2;i>0;i--)
    for (j=col/2+1;i==row/2-1?j>=0:j>col/2;j--)
        cout<<mas[i][j]<<endl;
for (i=2;i<row;i++)
    for (j=0;i==row-1?j<col:j<col/2-1;j++)
        cout<<mas[i][j]<<endl;
for (i=row-2;i>=0;i--)
    for (j=col-1;i==0?j>=0:j>col-2;j--)
        cout<<mas[i][j]<<endl;
getch();
}
Добавлено через 46 минут
есть вывод по спирали снаружи.. можно его както переделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
#include <iostream>
#define N 5
using namespace std;
 
int main()
{       int spiral[N][N];
        int i,j,k, edge, num = N*N;
 
    for(k=0; k<N/2;k++) //слои
        {       edge = N-1-k;
                for(j=k;j<edge;j++,num--)             
                        cout<<spiral[k][j]<<endl;
                for(i=k;i<edge;i++, num--)             
                        cout<<spiral[i][edge]<<endl;
                for(j=edge;j>k;j--, num--)    
                        cout<<spiral[edge][j]<<endl;
                for(i=edge;i>k;i--, num--)             
                        cout<<spiral[i][k]<<endl;
        }
        _getch();
       
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 19:49     Вывод матрицы по спирали изнутри
Посмотрите здесь:

Обход матрицы по спирали C++
Заполнение матрицы по спирали C++
C++ Вывод массива по спирали. Ошибка исполнения.
Задача на вывод элементов матрицы по спирали C++
C++ Вывод матрицы по спирали
C++ Вывод членов матрицы по спирали
Заполнение матрицы по спирали C++
Вывод текста по спирали C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
16.05.2012, 20:00     Вывод матрицы по спирали изнутри #2
посмотри здесь
Текст записывается в квадратную матрицу, а затем прочитывается по спирали, начиная с центра
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
17.05.2012, 00:45  [ТС]     Вывод матрицы по спирали изнутри #3
antoha398, да обратным выводом через одномерный массив, это понятное дело... А вот именно вывести попорядку так я не знаю((

Добавлено через 4 часа 14 минут
Написал универсальную прогу для матрицы с нечетным количеством строк, выводящую массив по часовой стрелке по спирали из центра

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <conio.h>
#define n 7
int main()
{
short int i,j,metka=1;
int  max=0,jmax=0,imax=1,jmin=0,imin=-1, sred=n/2, min=sred;   
    int a[7][7]={{49,48,47,46,45,44,43},{26,25,24,23,22,21,42},
    {27,10,9,8,7,20,41},
    {28,11,2,1,6,19,40},
    {29,12,3,4,5,18,39},
    {30,13,14,15,16,17,38},
    {31,32,33,34,35,36,37}};
    printf("%d ",a[sred][sred]);
  while (metka!=3) 
    switch(metka)
    {
        case 1: 
            imax++; jmax++; jmin++;imin++;
            for(i=sred-imin;i<sred+imax;i++)
               for(j=sred-jmin;j<sred+jmax;j++)
               {
                 printf("%d ",a[i][j]);
                 if (i!=sred+imax-1) break;
               } 
            metka=2;
        case 2: 
            max=max+1; min=min-1;
            for(i=sred+max;i>=min;i--)
               for(j=sred+max;j>=min;j--)
               {
                 printf("%d ",a[i][j]);
                 if (i!=sred-max) break;
               } 
               if (i==-1 && j==-1) metka=3; 
               else metka=1; 
    }
_getch();       
}
Yandex
Объявления
17.05.2012, 00:45     Вывод матрицы по спирали изнутри
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru