Необработанное исключение в 0x7A47E727 - PullRequest
1 голос
/ 16 июня 2020
#include "pch.h"
#include <iostream>
#include <string>

using namespace std;

int main()
{

    //system("cls");
    const int x = 30;
    const int y = 15;
    string tabella[y][x];
    char bordo = '#';
    for (int i = 0; i < x; i++)
        tabella[0][i] = bordo;
    for (int i = 0; i < y; i++)
        tabella[i][0] = bordo;
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
            std::cout << tabella[i][j];
        }
        std::cout << "\n";
    }

}

Я не понимаю, почему это дало мне эту проблему:

Eccezione non gestita в 0x7A47E727 (ucrtbased.dll) в Prova1.exe: 0xC0000005: violazione di accesso durante la lettura del percorso 0x CCCCCCCC.

Здесь это переведено на английский sh:

Необработанное исключение в 0x7A47E727 (ucrtbased.dll) в Test1.exe: 0xC0000005: нарушение прав доступа при чтении пути 0x CCCCCCCC.

Проблема, кажется, в этой строке: std::cout << tabella[i][j];

Я не знаю, но это началось, когда я использовал xey переменные. Кстати, я использую Visual Studio 2017.

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Посмотрите на границы вашего массива. У вас есть i и j в неправильном направлении.

std::cout << tabella[i][j];

должно быть

std::cout << tabella[j][i];

Или, может быть, у вас x и y в неправильном направлении. первое место.

1 голос
/ 16 июня 2020

Вы объявляете массив

const int x = 30;
const int y = 15;
string tabella[y][x];

, но здесь вы неправильно используете индексы:

std::cout << tabella[i][j];

, потому что i считает от 0 до 29, а j считает от 0 до 14.

Итак, вы должны использовать:

std::cout << tabella[j][i];

Это решит вашу проблему

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