Сведения о вопросе

Pytdev

14:30, 21st July, 2020

Теги

с++   matrix  

Как заполнить матрицу по спирали

Просмотров: 566   Ответов: 5

Нужно заполнить по часовой стрелке



  Сведения об ответе

DINO

16:19, 21st July, 2020

#include <bits/stdc++.h>

using namespace std;

int main()
{
    system("chcp 1251");
    int m;
    cin >> m;
    vector <vector < int > > ar(m , vector < int > (m));
    for (int i = 0;i < ar.size();++i)
    {
        for (int j = 0;j < ar.size();++j)
            cin >> ar[i][j];
    }
    cout << endl;
    for (int i = 0;i < ar.size() / 2 + 1;++i)
    {
        for (int j = 0;j < ar.size() - i;++j)
            cout << ar[i][j] << " ";
        for (int j = i + 1;j < ar.size() - i;++j)
            cout << ar[j][m - 1 - i] << " "; // c
        for (int j = ar.size() - 2 - i;j >= 1;--j)
            cout << ar[m - i - 1][j] << " ";
        for (int j = ar.size() - 1 - i;j > 1;--j)
            cout << ar[j][i] << " ";
    }

return 0;

}

ХОТЯ БЫ ПОДСКАЖИТЕ ГДЕ НЕПРАВИЛЬНО


  Сведения об ответе

davran

16:41, 21st July, 2020

#include <bits/stdc++.h>

using namespace std;

int main()
{
//    1 2 3 4 5
//    5 6 7 8 6
//    9 1 2 3 7
//    4 5 6 7 8
//    9 8 7 6 1

    int m;
    cin >> m;
    vector< vector<int> > a(m, vector<int> (m));
    for(int i = 0; i < m/2; ++i){
        for(int j = i; j < m - i; ++j)
            cin >> a[i][j];
//
//        for(auto i: a){
//            for(auto j: i)
//                cout << j << ' ';
//            cout << endl;
//        }
//        cout << endl;

        for(int j = 1 + i; j < m - i; ++j)
            cin >> a[j][m - i - 1];

//        for(auto i: a){
//            for(auto j: i)
//                cout << j << ' ';
//            cout << endl;
//        }
//        cout << endl;
        for(int j = m - i - 2; j >= i; --j)
            cin >> a[m - i - 1][j];

//        for(auto i: a){
//            for(auto j: i)
//                cout << j << ' ';
//            cout << endl;
//        }
//        cout << endl;
        for(int j = m - 2 - i; j >= i + 1; --j)
            cin >> a[j][i];

//        for(auto i: a){
//            for(auto j: i)
//                cout << j << ' ';
//            cout << endl;
//        }
//        cout << endl;

    }
    cin >> a[m/2][m/2];
    for(auto i: a){
        for(auto j: i)
            cout << j << ' ';
        cout << endl;
    }
    return 0;
}

при вводе: 1 2 3 4 5 6 7 8 9

Должны получить:

1 2 3
8 9 4
7 6 5


  Сведения об ответе

SSESION

16:49, 21st July, 2020

 

у вас неправильно при вводе

1 2 3

4 5 6

7 8 9

должны получить

1 2 3

6 9 8

7 4 5


  Сведения об ответе

lourence

16:53, 21st July, 2020

yes

Решение также доступно по ссылке:

https://hsecodes.com/index.php/abramyancatalog/index/11/15


  Сведения об ответе

baggs

16:56, 21st July, 2020

нету решения на с++

 


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться