Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Deszyfracja kolumnowa - krzaczki zamiast liter

Ostatnio zmodyfikowano 2016-05-20 16:11
Autor Wiadomość
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

C/C++
#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 }, }; //tablica statyczna 2D
   
    //wyświetlenie normalnie
    for( int w = 0; w < 5; w++ ) {
        for( int k = 0; k < 5; k++ ) {
            cout << tablica[ w ][ k ] << " ";
        }
        cout << endl;
    }
    //tablica ta w pamięci znajduje się liniowo
   
    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;
    //jak widać w prezentowanej talbicy 2D statycznej
    //gdy rzutować ją na tablicę jednowymiarową
    //cyfry kolumny znajdują się w co 5 elemencie.
   
    //wyświetlę kolumnę 3; to samo co zrobiłem ze stringiem
   
    cout << "wyświetlam kolumnę 3 skacząć co 5 element tablicy 1D" << endl;
    int index = 3;
    while( index < 25 ) {
        cout << wsk[ index ] << endl;
        index += 5;
    }
   
}
//Podałem przykład. A co z tym zrobisz to twoja sprawa
P-148444
carlosmay
» 2016-05-20 15:52:21
C/C++
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 }, }; //tablica statyczna 2D

// ...

//tablica ta w pamięci znajduje się liniowo

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.
P-148445
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 !!!
P-148446
1 « 2 »
Poprzednia strona Strona 2 z 2