Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/23: Рейтинг темы: голосов - 23, средняя оценка - 4.74
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
1

Заполнить массив числами от 1 до n^2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке

01.06.2013, 16:42. Просмотров 4380. Ответов 11
Метки нет (Все метки)

Помогите построить задачку на двумерный массив!

Заполнить квадратную таблицу размером n*n последовательными целыми числами от 1 до n^2, расположенными по спирали, начиная с левого верхнего угла и продвигаясь по часовой стрелке.

Не совсем понятно, как это все реализовать при вводе n самому...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2013, 16:42
Ответы с готовыми решениями:

Элементы размещаются по возрастанию по спирали к центру по часовой стрелке начиная от верхнего левого угла матрицы
Элементы размещаются по возрастанию по спирали к центру по часовой стрелке...

Прокрутить четверти матрицы по часовой стрелке, начиная с верхнего левого угла
Задание: дана матрица размерности nxn. Получить новую матрицу, переставляя её...

Заполнить квадратную матрицу, начиная от левого верхнего угла по спирали (возникает исключение)
Задача : Заполнить квадратную матрицу начинаю от левого верхнего угла по...

Распечатать элементы матрицы по спирали, начиная с левого верхнего угла
Дана действительная квадратная матрица порядка n. Распечатать элементы матрицы...

Функция: заполнить матрицу по часовой стрелке, от левого верхнего края
Нужно заполнить матрицу 9 на 9 числами от 1 до 81, но заполнить нужно по...

11
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
01.06.2013, 16:48 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
#include <iostream>
#include <fstream>
#include<cstdio>
#include <iomanip>
#include<cstdlib>
#include<string>
#include<cmath>
#include<vector>
#include<ctime>
 
using namespace std;
 
int main() {
    int N, i, j, a[100][100], t = 1;
    scanf("%d", &N);
    for (i = 0; i < N / 2; i++) {
        for (j = i; j < N - i; j++)
            a[i][j] = t++;
        for (j = i + 1; j < N - i; j++)
            a[j][N - 1 - i] = t++;
        for (j = N - 2 - i; j >= i; j--)
            a[N - 1 - i][j] = t++;
        for (j = N - 2 - i; j > i; j--)
            a[j][i] = t++;
    }
    if (N % 2 == 1)
        a[N / 2][N / 2] = t;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            j < N - 1 ? cout << a[i][j] << ' ' : cout << a[i][j] << endl;
        }
    }
    return 0;
}
2
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:02  [ТС] 3
Спасибо конечно, но условие немного по-другому записано...То есть матрица должны быть квадратная, и со стороной n, а n вводится с клавиатуры...и тогда как раз все числа до n в квадрате по спирали заполняют матрицу.
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
01.06.2013, 18:06 4
Цитата Сообщение от Dicur3x Посмотреть сообщение
ы...и тогда как раз все числа до n в квадрате по спирали заполняют матрицу
ну напишите пример такой матрицы
1
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:09  [ТС] 5
Цитата Сообщение от Belfegor Посмотреть сообщение
ну напишите пример такой матрицы
Дык по примеру и я бы сделал Стараюсь понять.
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
01.06.2013, 18:10 6
1 2 3
6 5 4
7 8 9
?
1
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:16  [ТС] 7
Цитата Сообщение от Belfegor Посмотреть сообщение
1 2 3
6 5 4
7 8 9
?
А, матрицу нарисовать, которая должна получиться:

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

И это при n=4 лишь
0
Xsenon_rus
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
01.06.2013, 18:18 8
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

Может так ?
0
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
01.06.2013, 18:19 9
значит я правильно понял, вы бы хоть проверили то, что написал я....
1
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:20  [ТС] 10
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

Может так ?
Цитата Сообщение от Dicur3x Посмотреть сообщение
А, матрицу нарисовать, которая должна получиться:

1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

И это при n=4 лишь
Дык так и написал )
0
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:29  [ТС] 11
Цитата Сообщение от Belfegor Посмотреть сообщение
значит я правильно понял, вы бы хоть проверили то, что написал я....
Я же пишу, в процессе понимания...Пытаюсь понять код...У самого сложности с этими массивами...
0
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
01.06.2013, 18:47  [ТС] 12
Цитата Сообщение от Belfegor Посмотреть сообщение
значит я правильно понял, вы бы хоть проверили то, что написал я....
Спасибо, программа работает, а вот код не пойму...И в универе времени не хватает, чтобы мне переподаватель объяснил все, не один ведь я там. Спасибо.
0
01.06.2013, 18:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 18:47

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

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

Сформируйте линейный массив получающийся при чтении массива с левого верхнего угла до середины против часовой стрелки
Помогите, пожалуйста, составить программу, для решения такой задачи: Дан...


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

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

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