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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zo_0m
24 / 24 / 12
Регистрация: 22.10.2011
Сообщений: 160
#1

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

16.05.2012, 19:49. Просмотров 939. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста, кто может написать функцию вывода матрицы 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++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #define n 5 void main() { int k,j,i; int imin,jmin,imax,jmax; int a; jmin=0; ...

Вывод текста по спирали - C++
Напишите программу. которая анализирует текст в файле и выводит предожения (на экран или в фат-та) в форме спирали. Столбцы спирали должны...

Вывод массива по спирали. Ошибка исполнения. - C++
Дан квадратный массив задаваемой размерности, нужно вывести в ряд его элементы змейкой начиная с элемента последней строки последнего...

Заполнение матрицы по спирали - C++
как заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз - влево - вверх

Заполнение матрицы по спирали - C++
Привет всем, можете помочь пожалуйста: надо придумать алгоритм, написать код на С++ заполнения матрицы по контуру по часовой стрелке (т.е....

Заполнение матрицы по спирали - C++
Здравствуйте! Помогите, пожалуйста, с задачей: Заполнить квадратную матрицу nxn последовательными целыми числами от 1 до n^2,...

Заполнение матрицы по спирали - C++
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу порядка N*N целыми числами 0, 1, 2, 3, …, N^2–1 по спирали(по часовой стрелке). Важное...

Обход матрицы по спирали - 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     Вывод матрицы по спирали изнутри
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru