программа, которая печатает матрицу по спирали. (не работает нормально) - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно написать программу, которая отображает элементы матрицы по спирали. Моя программа не работает нормально. Вот код:

#include <iostream>
using namespace std;

void citireMatrice(int a[100][100], int n) // function to read a matrix
{
    int i, j;
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < n; ++j)
        {
            cout<<"a[" << i << "][" << j << "]=";
            cin >> a[i][j];
        }
    }
}

void spiral(int a[100][100], int n)
{
    int i, j, k;
    if (n % 2==0)
    {
        k = n / 2;
    }
    else
    {
        k = n / 2 + 1;
    }
    for (i = 1; i <= k; ++i)
    {
        for (j = 1; j <= n - i + 1; ++j)
        {
            cout << a[i][j] << " ";
        }
        for (j = i + 1; j <= n - i + 1; ++j)
        {
            cout << a[j][n - i + 1] << " ";
        }
        for (j = n-i; j >= i; j--)
        {
            cout << a[n - i + 1][j] << " ";
        }
        for (j = n-1;j>=i+1;j--)
        {
            cout << a[j][i];
        }
    }
}

int main()
{
    int a[100][100];
    int n;
    cout << "n=";
    cin >> n;
    citireMatrice(a, n);
    spiral(a, n);
    return 0;
}

Если я введу n = 2 с элементами 1, 2, 3, 4 отображаются 4 -858993460 и другие подобные цифры. Где моя ошибка?

1 Ответ

0 голосов
/ 25 февраля 2020

Вы правильно используете индексирование массивов на основе нуля в citireMatrice, но в spiral вы используете индексирование на основе одного.

Вы должны начать свои циклы с 0 и закончить на < n. (Подумайте, какой элемент a будет напечатан первым.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...