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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
maksbuck
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 5
#1

Заполнить квадратную матрицу размером N x N по спирали - C++

18.08.2012, 13:40. Просмотров 2378. Ответов 2
Метки нет (Все метки)

Заполнить квадратную матрицу размером N x N по спирали (N – нечётное число).
Число 1 ставится в центр матрицы, а затем массив заполняется по спирали против часовой стрелки значениями по возрастанию.
Например, если размер N = 5, то в конце должно выглядеть так:
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
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2012, 13:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить квадратную матрицу размером N x N по спирали (C++):

Заполнить квадратную матрицу по спирали - C++
Одномерный: В заданном целочисленном массиве R(9) определить индекс наибольшего из нечетных по значению положительных элементов. ...

Заполнить квадратную матрицу числами по спирали - C++
Задача B. Спираль В этой задаче вам необходимо вывести квадрат, состоящий из NxN клеток, заполненных числами от 1 до N2 по спирали...

Заполнить целочисленную квадратную матрицу по спирали - C++
Получить целочисленную квадратную матрицу порядка 2n+1, элементами которой являются числа 1, 2, 3, ... , (2*n + 1), расположенные в...

Заполнить квадратную матрицу по спирали по часовой стрелке - C++
Нужно составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, ... n, записывая их в нее "по...

Заполнить заданную квадратную матрицу по спирали числами 0 и 1 - C++
Всем привет! Поставили передо мной следующую задачу: Написать программу, которая заполняет матрицу NxN (1 <= N <= 50) числами 1 и 0 по...

Заполнить квадратную матрицу натуральными числами по спирали - C++
Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, …, n2, записывая их в нее «по спирали»...

2
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
18.08.2012, 15:05 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
40
41
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
#define N 15
 
int main()
{
    int** X = new int*[N];
    for (int s = 0; s < N; s++)
        X[s] = new int[N];
 
    int n = (int)(pow((double)N,2)); 
    for (int r = 0; r <= N / 2; r++)
    {
        int i1 = r, i2 = r+1, i3 = N-r-2, i4 = N-r-2;
        while (i1 < N-r)  { X[r][i1++] = n; n--; }
        while (i2 < N-r)  { X[i2++][N-r-1] = n; n--; }
        while (i3 >= r)       { X[N-r-1][i3--] = n; n--; }
        while (i4 >= r+1) { X[i4--][r] = n; n--; }
    }
 
    for (int z1 = 0; z1 < N; z1++)
    {
        for (int z2 = 0; z2 < N; z2++)
        {
            if (X[z1][z2] >= 0 && X[z1][z2] <= 9)
                printf("  %d ",X[z1][z2]);
            else if (X[z1][z2] >= 10 && X[z1][z2] <= 99)
                printf(" %d ",X[z1][z2]);
            else if (X[z1][z2] >= 100 && X[z1][z2] <= 999)
                printf("%d ",X[z1][z2]);
        }
 
        printf("\n");
    }
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/2298a3aba3b8480c2ae0177d68b11194
0
Миниатюры
Заполнить квадратную матрицу размером N x N по спирали  
SubTerran
8 / 8 / 0
Регистрация: 13.08.2012
Сообщений: 18
18.08.2012, 15:23 #3
Библиотека: Matrix.h
http://www.stroustrup.com/Programming/Matrix/Matrix.h
Библиотека: MatrixIO.h
http://www.stroustrup.com/Programming/Matrix/MatrixIO.h

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
#include "../../Matrix.h"
#include "../../MatrixIO.h"
 
int N = 5;
int k = 1;
 
void spiral(Numeric_lib::Matrix<int, 2>& matrix, int i, int j, int ii)
{
    matrix(i, j) = ++k;
    for(int n = 1; n <= ii; ++n)
    matrix(i + n, j) = ++k;
    for(int n = 1; n <= ii + 1; ++n)
    matrix(i + ii, j + n) = ++k;
    for(int n = ii - 1; n >= 0; --n)
    matrix(i + n, j + ii + 1) = ++k;
    for(int n = ii + 1; n >= 0; --n)
    matrix(i - 1, j + n) = ++k;
    if (i == 1 && j == 0)
        return;
    spiral(matrix, i - 1, j - 1, ii + 2);
}
 
int main()
{
    Numeric_lib::Matrix<int, 2> matrix(N, N);
    int number = N / 2;
    matrix(number, number) = k;
    spiral(matrix, number, number - 1, 1);
    std::cout << matrix << '\n';
    system("pause");
}
0
Миниатюры
Заполнить квадратную матрицу размером N x N по спирали  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2012, 15:23
Привет! Вот еще темы с ответами:

Заполнить квадратную матрицу от левого верхнего угла по спирали - C++
Заполнить матрицу А(9,9), от левого верхнего угла по спирали: вправо - вниз - влево - вверх.

Заполнить квадратную матрицу, начиная от левого верхнего угла по спирали (возникает исключение) - C++
Задача : Заполнить квадратную матрицу начинаю от левого верхнего угла по спирали : вправо - вниз - влево - вверх. #include &lt;iostream&gt; ...

Заполнить двумерный массив размером 5 на 5 по спирали - C++
Заполнить двумерный массив таким образом 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

Заполнить двумерный массив размером 7 на 7 числами, расположенными в нем по спирали - C++
Заполнить двумерный массив размером 7 на 7 числами 1,2,..49, расположенными в нем по спирали! Помогите пожалуйста написать программу)


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

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

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