mateczek |
» 2016-05-20 15:39:51 Jestem w 2. liceum taki sposób nie tyle proponowała, co wręcz narzuciła nam nauczycielka
|
Zrobisz jak uważasz #include <iostream> using namespace std; int main() { int tablica[ 5 ][ 5 ] { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, }; for( int w = 0; w < 5; w++ ) { for( int k = 0; k < 5; k++ ) { cout << tablica[ w ][ k ] << " "; } cout << endl; } int * wsk =( int * ) tablica; cout << "wyświetlam liniowo traktując tablicę jako 1 wymiarową" << endl; for( int i = 0; i < 25; i++ ) cout << wsk[ i ] << " "; cout << endl; cout << "wyświetlam kolumnę 3 skacząć co 5 element tablicy 1D" << endl; int index = 3; while( index < 25 ) { cout << wsk[ index ] << endl; index += 5; } }
|
|
carlosmay |
» 2016-05-20 15:52:21 int tablica[ 5 ][ 5 ] { { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, { 1, 2, 3, 4, 5 }, };
int * wsk =( int * ) tablica; cout << "wyświetlam liniowo traktując tablicę jako 1 wymiarową" << endl; for( int i = 0; i < 25; i++ ) cout << wsk[ i ] << " ";
Są dwie strony medalu tego rozwiązania. Standard wymusza liniowy rozkład elementów tablicy tablic, natomiast iterowanie jak po jednowymiarowej jest UB. Lepszym rozwiązaniem jest utworzenie jednowymiarowej tablicy i stworzyć dla niej interfejs dwuwymiarowej. |
|
mateczek |
» 2016-05-20 16:11:14 Lepszym rozwiązaniem jest utworzenie jednowymiarowej tablicy i stworzyć dla niej interfejs dwuwymiarowej.
|
Dokładnie!!!! Z tego co rozszyfrowałem temat to kolega miał przepisać stringa do tablicy 2D wierszami i odczytać go kolumnami. Mój przykłąd miał tylko służyć jako analogia. Pokazać że indeksując co 5 element poruszamy się po napisie jak po wirtualnej tablicy 2d. Bo przecież w tablicach statycznych kompilator robi dokładnie to samo !!! |
|
1 « 2 » |