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

многомерные массивы (c++) Как нужно объявить четырехмерный массив с помощью указателей?

Артём Сидокин
Артём Сидокин
1 826
#include <iostream>
using namespace std;

int main()
{
int **** a;
int size_1, size_2, size_3, size_4;

cout << endl << " Enter size_1: "; cin >> size_1;
cout << endl << " Enter size_2: "; cin >> size_2;
cout << endl << " Enter size_3: "; cin >> size_3;
cout << endl << " Enter size_4: "; cin >> size_4;
cout << endl;

a = new int *** [size_1];
for (int n = 0; n < size_1; n++)
{
a[n] = new int ** [size_2];
for (int m = 0; m < size_2; m++)
{
a[n][m] = new int * [size_3];
for (int g = 0; g < size_3; g++)
{
a[n][m][g] = new int [size_4];
for (int t = 0; t < size_4; t++)
{
cout << "a[" << n << "][" << m << "][" << g << "][" << t << "] = ";
cin >> a[n][m][g][t];
}
}
}
}

cout << endl;
for (int n = 0; n < size_1; n++)
for (int m = 0; m < size_2; m++)
for (int g = 0; g < size_3; g++)
for (int t = 0; t < size_4; t++)
cout << ' ' << a[n][m][g][t];

for (int n = 0; n < size_1; n++)
for (int m = 0; m < size_2; m++)
for (int g = 0; g < size_3; g++) delete[] a[n][m][g];
for (int n = 0; n < size_1; n++)
for (int m = 0; m < size_2; m++) delete[] a[n][m];
for (int n = 0; n < size_1; n++) delete[] a[n];
delete[] a;

cin.get(); cin.get();
return 0;
}

P.S. Повнимательнее с такими заданиями, а так и до дурки недалеко! ;-)
Дамир .
Дамир .
81 076
Лучший ответ
#include <iostream>
using namespace std;
int main ()
{
int k,j,n1,n2,n3,n4,j1,j2,j3,j4;
n4=1+(n3=1+(n2=1+(n1=2)));
int* p1=new int[n1*n2*n3*n4*sizeof(int)];
int** p2=new int*[n1*n2*n3*sizeof(int)];
int*** p3=new int**[n1*n2*sizeof(int)];
int**** p4=new int***[n1*sizeof(int)];
for(j=0;j-n1*n2*n3;p2[j++]=&p1[j*n4]);
for(j=0;j-n1*n2;p3[j++]=&p2[j*n3]);
for(j=0;j-n1;p4[j++]=&p3[j*n2]);
for(k=j=0;j-n1*n2*n3*n4;p1[j++]=++k);
for(j1=0;j1-n1;j1++,cout << endl << endl << endl)
for(j2=0;j2-n2;j2++,cout << endl << endl)
for(j3=0;j3-n3;j3++,cout << endl)
for(j4=0;j4-n4;j4++) cout << p4[j1][j2][j3][j4] << '\t';
delete [] p1,p2,p3,p4;
}
массив указателей на указатели.
а дальше по ходу дела
Иван Басов
Иван Басов
75 320