С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.07.2020
Сообщений: 2
1

Как заполнить матрицу по спирали(по часовой стрелке)

21.07.2020, 15:01. Показов 855. Ответов 1

Author24 — интернет-сервис помощи студентам
Желательно с объяснением
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2020, 15:01
Ответы с готовыми решениями:

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

Заполнить матрицу по часовой стрелке
Ввести массив B, что состоит с элементов А(10;10), начиная с правого верхнего угла по часовой...

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

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

1
3718 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
21.07.2020, 16:29 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
 // дополнительная функция заполнения массива
 // arr - массив , row - строка для заполнения, i_s - начальный индекс столбца, i_e  - конечный индекс
void printArray(int **arr, int rows, int cols)
{
    printf("\n");
    for(int i = 0; i < rows; i++ )
    {
        for(int j = 0; j < cols; j++ )
            printf("  %3d", arr[i][j]);
        printf("\n");
    }
}
bool assign_row_right(int **arr, int row, int i_s, int i_e)
{
    if (i_s > i_e)
       return false;
    for (int i =i_s; i < i_e + 1; i++)
        // заполняем массив
        cin>>arr[row][i];
    return true;
}
 
bool assign_col_down(int ** arr, int col, int i_s, int i_e)
{
    if ( i_s > i_e )
       return false;
    for (int i =i_s; i < i_e + 1; i++)
        cin>>arr[i][col];
    return true;
}
bool assign_row_left(int ** arr, int row, int i_s, int i_e)
{
    if ( i_s < i_e )
       return false;
    for (int i =i_s; i > i_e - 1; i--)
        cin>>arr[row][i];
    return true;
}
bool assign_col_up(int ** arr, int col, int i_s, int i_e)
{
    if ( i_s < i_e)
       return false;
    for (int i = i_s; i > i_e - 1; i--)
        cin>>arr[i][col];
    return true;
}
 
int main ()
{
    int m=1, n=1;
 
    cout<<endl<<"Введите количество строк : ";
    cin >> m;
    if (m<1)
        {
            cout<<"Некоректный ввод !!! ";
            return 0;
        }
 
    cout<<endl<<"Введите количество столбцов : ";
    cin >> n;
    if (n < 1)
        {
            cout<<"Некоректный ввод !!! ";
            return 0;
        }
 
    int **arr = new int*[m];
    for (int i = 0; i < m; i++)
        arr[i] = new int[n];
 
    int row_top , row_bottom;
    int col_left , col_right;
 
    // в данном случае стартуем с 0 , 0
    row_top = 0;
    row_bottom = m - 1; // превращаем размер в индекс
    col_left = 0;
    col_right = n - 1;
 
    while(true)
    {
         if ( ! assign_row_right(arr, row_top, col_left, col_right) )
                 break;
         row_top++;
         if ( ! assign_col_down(arr, col_right, row_top, row_bottom) )
             break;
         col_right--;
         if ( ! assign_row_left(arr, row_bottom, col_right, col_left) )
             break;
         row_bottom--;
         if ( ! assign_col_up(arr, col_left, row_bottom, row_top) )
             break;
         col_left++;
         // полный виток спирали завершен
    }
    printArray(arr, m , n);
    for (int i = 0; i<m; i++)
        delete [] arr;
    delete [] arr;
    cin.sync();
    cin.get();
    return 0;
}
0
21.07.2020, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2020, 16:29
Помогаю со студенческими работами здесь

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

Заполнить матрицу по спирали против часовой стрелки
помогите поменять циклы в коде и сделать такую спираль: 1 32 31 30 29 28 27 26 25 2 33 56 55 54...

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

Заполнение матрицы по спирали (из центра по часовой стрелке)
Пользователь должен ввести размерность матрици!Матрица квадратная!А программа должна заполнить её...

Заполнить матрицу по спирали, закрученной по часовой стрелке
Добрый день! Прошу помощи, ссылок на примерные задачи, ссылки почитать как можно решить данную...

Заполнить матрицу по спирали, закрученной по часовой стрелке
По введенным значениям n, m (1 ≤ n ≤ 20, 1 ≤ m ≤ 20) заполните массив размерностью n × m...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru