c ++ 3d массивы - PullRequest
       12

c ++ 3d массивы

0 голосов
/ 11 декабря 2008

Я пытаюсь запустить 3d-массив, но код просто вылетает в Windows, когда я его запускаю, вот мой код;

#include <iostream>

using namespace std;

int main(){

    int myArray[10][10][10];

    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){            
            for (int x = 0; x <= 9; ++t){

                myArray[i][t][x] = i+t+x; 

            }

        }

     }


    for (int i = 0; i <= 9; ++i){
        for (int t = 0; t <=9; ++t){
            for (int x = 0; x <= 9; ++t){

                cout << myArray[i][t][x] << endl;

            }

        }

    }

    system("pause");

}

Может кто-нибудь дать мне быстрое исправление / объяснение

Ответы [ 2 ]

14 голосов
/ 11 декабря 2008

У вас дважды есть строка

for (int x = 0; x <= 9; ++t){

когда вы имеете в виду

for (int x = 0; x <= 9; ++x){

Классическая ошибка копирования и вставки.

Кстати, если вы запустите это в отладчике и посмотрите на значения переменных, довольно легко увидеть, что происходит.

2 голосов
/ 11 декабря 2008

Дэвид ответил правильно.

Между прочим, условием является использование i, j и k для вложенных индексов итераторов, а также использование

Если вы сделаете это, то сможете сделать размер массива постоянным и избавиться от некоторых магических чисел.

Кроме того, утверждение в точке, где вы используете индексы массива, могло бы указать вам на ошибку.

Результат может выглядеть так:

const std::size_t ARRAY_SIZE = 10;

int myArray[ARRAY_SIZE][ARRAY_SIZE][ARRAY_SIZE];

for (std::size_t i = 0; i < ARRAY_SIZE; ++i) 
{
    for (std::size_t j = 0; j < ARRAY_SIZE; ++j)
    {
        for (std::size_t k = 0; k < ARRAY_SIZE; ++k)
        {
            std::assert (i < ARRAY_SIZE && j < ARRAY_SIZE && k < ARRAY_SIZE);
            // Do stuff
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...