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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
maksbuck
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 5
18.08.2012, 13:40     Заполнить квадратную матрицу размером N x N по спирали #1
Заполнить квадратную матрицу размером 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
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2012, 13:40     Заполнить квадратную матрицу размером N x N по спирали
Посмотрите здесь:

C++ Текст записывается в квадратную матрицу, а затем прочитывается по спирали, начиная с центра
Заполнить матрицу из центра по спирали C++
C++ Заполнить квадратную матрицу от левого верхнего угла по спирали
C++ Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поме
C++ Заполнить квадратную матрицу по спирали по часовой стрелке
Заполнить двумерный массив размером 7 на 7 числами, расположенными в нем по спирали C++
C++ Заполнить квадратную матрицу натуральными числами по спирали

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
18.08.2012, 15:05     Заполнить квадратную матрицу размером N x N по спирали #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/2298a3...e0177d68b11194
Миниатюры
Заполнить квадратную матрицу размером N x N по спирали  
SubTerran
8 / 8 / 0
Регистрация: 13.08.2012
Сообщений: 18
18.08.2012, 15:23     Заполнить квадратную матрицу размером N x N по спирали #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");
}
Миниатюры
Заполнить квадратную матрицу размером N x N по спирали  
Yandex
Объявления
18.08.2012, 15:23     Заполнить квадратную матрицу размером N x N по спирали
Ответ Создать тему
Опции темы

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