2 / 1 / 1
Регистрация: 16.10.2018
Сообщений: 9
1

Заполнить матрицу по спирали против часовой стрелки

16.11.2018, 06:33. Показов 6249. Ответов 2

помогите поменять циклы в коде и сделать такую спираль:
1 32 31 30 29 28 27 26 25
2 33 56 55 54 53 52 51 24
3 34 57 72 71 70 69 50 23
4 35 58 73 80 79 68 49 22
5 36 59 74 80 78 67 48 21
6 37 60 75 76 77 66 47 20
7 38 61 62 63 64 65 46 19
8 39 40 41 42 43 44 45 18
9 10 11 12 13 14 15 16 17

результат кода ниже: (он идет направо, мне нужно чтобы вниз)


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
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
int main()
{
    int const n = 9;
    int A[n][n];
    int i = 1, j, k, p = n / 2;
    for (k = 1;k <= p;k++)
    {
        for (j = k - 1;j<n - k + 1;j++) A[k - 1][j] = i++; // верхняя
        for (j = k;j<n - k + 1;j++) A[j][n - k] = i++; // правая 
        for (j = n - k - 1;j >= k - 1;--j) A[n - k][j] = i++; // нижняя
        for (j = n - k - 1;j >= k;j--) A[j][k - 1] = i++; //  левая
    }
    if (n % 2 == 1) A[p][p] = n*n;
    for (i = 0;i < n;i++) 
    {
        for (j = 0;j < n;j++)
        {
            cout << setw(4) << A[i][j];
        }
        cout << endl;
    }
    _getch();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2018, 06:33
Ответы с готовыми решениями:

Вывести содержимое файла в матрицу по спирали против часовой стрелки
необходимо считывать из файла символ и заносить его в матрицу по спирали против часовой стрелки, не...

Заполнить матрицу с середины против часовой стрелки
Нужно заполнить квадратную матрицу(то есть размер nXn) нужно заполнить по спирали, начиная с центра...

Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки

Записать текст матрицы от ее центра по спирали против часовой стрелки
Задача записать текст квадратной матрицы размера n(n-нечетное) от центра матрицы по спирали против...

2
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
16.11.2018, 08:42 2
Лучший ответ Сообщение было отмечено luxifero как решение

Решение

luxifero, вывод обратный:
C++
1
cout << setw(4) << A[j][i];
1
0 / 0 / 0
Регистрация: 18.04.2022
Сообщений: 2
08.05.2022, 18:22 3
Вы заполняете все равно против часовой стрелки, вот заполнение по часовой.



#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int n;
cout << "Видите размер массива:=";
cin >> n ;
while ((!cin) || (n < 1) )
{
cout << endl << "Ошибка ввода. Повторите ввод значений" << endl;
cin.clear();
cin.ignore();
cout << "Видите размер массива:=";
cin >> n;
}
long int** matr = new long int* [n];
for (int i = 0; i < n; i++)
matr[i] = new long int[n];
int i = 1, j, k, p = n / 2;
for (k = 1; k <= p; k++)
{
for (j = k - 1; j < n - k ; j++) matr[j][k - 1] = i++; // левая
for (j = k - 1; j < n - k + 1; j++) matr[n-k][j] = i++; // нижняя
for (j = n - k - 1; j >= k - 1; j--) matr[j][n - k] = i++; //правая
for (j = n - k - 1; j >= k ; --j) matr[k-1][j] = i++; //верхняя
}
//if (n % 2 == 1) matr[p][p] = n * n;(кажется работает и без этой строчки)
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
cout << setw(4) << matr[i][j];
}
cout << endl;
}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2022, 18:22
Помогаю со студенческими работами здесь

Повернуть матрицу против часовой стрелки
Повернуть матрицу против часовой стрелки. Я написал программу, но она не запускается. Где-то я...

Повернуть матрицу на угол 90° против часовой стрелки
Дана квадратная матрица A порядка M. Повернуть ее на угол 90° в положительном направлении, то есть...

Повернуть матрицу с случайными числами на 90 градусов против часовой стрелки
Задание звучит так: Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой...

Повернуть матрицу на 180 градусов против часовой стрелки, не создавая дополнительных массивов
Имеется квадратная матрица (не менее, чем 5 на 5). Ввести элементы, распечатать. Повернуть на 180...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru