Форум » C/C++ для начинающих (C/C++ for beginners) » ­Способы создание массивов » Ответить

­Способы создание массивов

Сыроежка: [pre2] #include <iostream> #include <iomanip> const size_t N1 = 2, N2 = 3, N3 = 4; void f( int ( &a )[N1][N2][N3] ) { int value = 0; for ( auto &a2 : a ) { for ( auto &a3 : a2 ) { for ( auto &item : a3 ) item = value++; } } } int main() { int a[N1][N2][N3]; f( a ); int width = 1; std::cout << std::setw( width ) << "{\n"; width += 4; for ( const auto &a2 : a ) { std::cout << std::setw( width ) << "{\n"; width += 3; for ( const auto &a3 : a2 ) { std::cout << std::setw( width ) << "{ "; for ( const auto &item : a3 ) { std::cout << std::setw( 2 ) << item << ' '; } std::cout << "}\n"; } width -= 3; std::cout << std::setw( width ) << "}\n"; } width -= 4; std::cout << std::setw( width ) << "}\n"; }[/pre2] Вывод программы на косноль [pre2] { { { 0 1 2 3 } { 4 5 6 7 } { 8 9 10 11 } } { { 12 13 14 15 } { 16 17 18 19 } { 20 21 22 23 } } }[/pre2] [pre2] #include <iostream> #include <iomanip> const size_t N2 = 3, N3 = 4; void f( int a[][N2][N3], size_t n1 ) { int value = 0; for ( size_t i = 0; i < n1; i++ ) { for ( auto &a3 : a ) { for ( auto &item : a3 ) item = value++; } } } int main() { size_t n1 = 2; int ( * a )[N2][N3] = new int[n1][N2][N3]; f( a, n1 ); int width = 1; std::cout << std::setw( width ) << "{\n"; width += 4; for ( size_t i = 0; i < n1; i++ ) { std::cout << std::setw( width ) << "{\n"; width += 3; for ( const auto &a3 : a ) { std::cout << std::setw( width ) << "{ "; for ( const auto &item : a3 ) { std::cout << std::setw( 2 ) << item << ' '; } std::cout << "}\n"; } width -= 3; std::cout << std::setw( width ) << "}\n"; } width -= 4; std::cout << std::setw( width ) << "}\n"; }[/pre2] Вывод программы на консоль [pre2] { { { 0 1 2 3 } { 4 5 6 7 } { 8 9 10 11 } } { { 12 13 14 15 } { 16 17 18 19 } { 20 21 22 23 } } }[/pre2] [pre2] #include <iostream> #include <iomanip> const size_t N2 = 3; void f( int * a[][N2], size_t n1, size_t n3 ) { int value = 0; for ( size_t i = 0; i < n1; i++ ) { for ( auto &a2 : a ) { for ( size_t j = 0; j < n3; j++ ) a2[j] = value++; } } } int main() { size_t n1 = 2; size_t n3 = 4; int * ( *a )[N2] = new int *[n1][N2]; for ( size_t i = 0; i < n1; i++ ) { for ( auto &a2 : a ) a2 = new int[n3]; } f( a, n1, n3 ); int width = 1; std::cout << std::setw( width ) << "{\n"; width += 4; for ( size_t i = 0; i < n1; i++ ) { std::cout << std::setw( width ) << "{\n"; width += 3; for ( const auto &a2 : a ) { std::cout << std::setw( width ) << "{ "; for ( size_t j = 0; j < n3; j++ ) { std::cout << std::setw( 2 ) << a2[j] << ' '; } std::cout << "}\n"; } width -= 3; std::cout << std::setw( width ) << "}\n"; } width -= 4; std::cout << std::setw( width ) << "}\n"; for ( size_t i = 0; i < n1; i++ ) { for ( const auto &a2 : a ) delete [] a2; } delete [] a; }[/pre2] Вывод программы на консоль [pre2] { { { 0 1 2 3 } { 4 5 6 7 } { 8 9 10 11 } } { { 12 13 14 15 } { 16 17 18 19 } { 20 21 22 23 } } }[/pre2] [pre2] #include <iostream> #include <iomanip> const size_t N3 = 4; void f( int ( * a[] )[N3], size_t n1, size_t n2 ) { int value = 0; for ( size_t i = 0; i < n1; i++ ) { for ( size_t j = 0; j < n2; j++ ) { for ( auto &item : a[j] ) item = value++; } } } int main() { size_t n1 = 2; size_t n2 = 3; int ( **a )[N3] = new ( int ( *[n1] )[N3] ); for ( size_t i = 0; i < n1; i++ ) { a = new int[n2][N3]; } f( a, n1, n2 ); int width = 1; std::cout << std::setw( width ) << "{\n"; width += 4; for ( size_t i = 0; i < n1; i++ ) { std::cout << std::setw( width ) << "{\n"; width += 3; for ( size_t j = 0; j < n2; j++ ) { std::cout << std::setw( width ) << "{ "; for ( const auto &item : a[j] ) { std::cout << std::setw( 2 ) << item << ' '; } std::cout << "}\n"; } width -= 3; std::cout << std::setw( width ) << "}\n"; } width -= 4; std::cout << std::setw( width ) << "}\n"; for ( size_t i = 0; i < n1; i++ ) { delete [] a; } delete [] a; }[/pre2] Вывод программы на консоль [pre2] { { { 0 1 2 3 } { 4 5 6 7 } { 8 9 10 11 } } { { 12 13 14 15 } { 16 17 18 19 } { 20 21 22 23 } }}[/pre2]­

Ответов - 2

Сыроежка: *PRIVAT*

Сыроежка: *PRIVAT*



полная версия страницы