Другие языки программирования и технологии

Объявление массива С++. С клавиатуры вводится число n, потом надо задать массив nxn. Как это сделать?

2Imobilazer: вариант Серого работает, но только в последних версиях компиляторов, это C++11. А твой вариант вообще не работает.

Если компилятор старый, напрямую так сделать (почти) нельзя. Есть 3 обходных пути:

- одномерный массив, вручную адресуемый как двумерный:
int *mass = new int [ n*n ];
mass[ i*n + j ] = 5;//вместо mass[ i ][ j ] = 5
...

- массив массивов:
int **mass = new int *[ n ];
for ( int i = 0; i < n; ++i ) mass[ i ] = new int [ n ];
mass[ i ][ j ] = 5;
но удалять тоже - сначала в цикле все подмассивы, а потом основной. Кстати, так можно делать пилообразный массив, с разной длиной строк.

- одномерный массив, преобразованый к нужному типу:
int (&mass)[ n ][ n ] = *reinterpret_cast< int (*)[ n ][ n ] >(new int[ 10 * 10 ]);
Но так делать не рекомендуется, особенно новичкам, это очень сильное C++-ное колдунство.
ФЛ
Фёдор Литвинёнок
85 659
Лучший ответ
int n;
cin >> n;
int *mass = new int[n][n];
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> mass[ i][j];
#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
int n;
cout n;
int myArray[n];
system("pause");
return 0;
}
Андрей Буров
Андрей Буров
5 619

Похожие вопросы