Matrizen



  • #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        system("color 02");
        const int dim1 = 2, dim2 = 10;
        int matrix [dim1][dim2] = {{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
        cout << matrix [dim1][dim2] << " ";
        cout << endl;
        cin.get();
        return 0;
    }
    

    Das ergibt einen merkwürdigen Wert aus (40...) bla
    wie funzt den das jetzt genau ?
    Ich hab noch nie ne Matrix gebraucht, und jetzt fragt mich ein Freund, aber
    ich konnte ihm da jetzt nicht helfen



  • #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        system("color 02");
        const int dim1 = 2, dim2 = 10;
        int matrix [dim1][dim2] = {{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
        cout << matrix [dim1][dim2] << " ";
        cout << endl;
        cin.get();
        return 0;
    }
    

    versuch es mal so:

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        system("color 02");
        const int dim1 = 2, dim2 = 10;
        int matrix [dim1][dim2] = {{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};
        for (int i = 0; i < dim1; i++)
         for (int j = 0; j < dim2; j++)
            cout << matrix [i][j] << " ";
        cout << endl;
        cin.get();
        return 0;
    }
    

    dann werden auch alle Werte ausgegeben, aber ich verstehe die Frage nicht?



  • Du greifst auf ein Element ausserhalb der Arraygrenzen zu. Ein Array in C++ der Dimension n geht von 0..n-1. Um auf das Element "rechts unten" deiner Matrix zuzugreifen, musst du also:

    cout << matrix [dim1-1][dim2-1] << " ";
    

    schreiben.



  • wusste ichs doch !
    Ist überall so von 0 bis n



  • Tim06TR schrieb:

    wusste ichs doch !
    Ist überall so von 0 bis n

    0 bis n-1



  • Allgemein gilt für Arrays

    MaxIndex = Größe - 1;
    

    Daher wenn du ein Array:

    int i[GROESSE]; // anlegst 
    i[GORESSE - 1]; // (GORESSE - 1) ist der letzte Index
    

    Das kommt daher weil du den den Index bei 0 beginnst, du legst ja auch ein Array nicht so an:

    (ganz falsch) int i[0]
    

    sondern

    (richtig) int i[1]
    

    und zugreifen tust du mit

    (richtig) i[0]; // MaxIndex = 1 - 1 = 0
    

    und nicht mit

    (ganz falsch) i[1]; // ist jetzt ausserhalb von MaxIndex
    

    .



  • C++ Builder, MFC -> Ständige Konfrontation damit.
    Und das mit 0 - n-1, PINGELICH, war doch ohne nachzudenken da higeplerrt.
    In der Praxis würde ich diesen Fehler nie machen.
    Nur bei den Matrizen war ich mir jetzt nicht 100% sicher.

    ______________________________________________________
    Hearing Very nice music now. 😃


Log in to reply