Matrix-Problem



  • Hallo kann mir vielleicht hierbei jemand behilflich sein bekomme immmer eine Fehlermeldung vom Compiler das der wert weder eine reihe noch ein zeiger ist.

    void main(void)
    {
        int matrix_a [4][5] = {  {3,15,10,30,14},
                                 {16,12,12,24,8},
                                 {8,5,15,20,20},
                                 {10,8,14,10,25},
                                 };
        int matrix_b [5] = {3,2,1,2,3};
    
        int ges_pkte [4] = {0,0,0,0};
        int a,k,i;
    
     for(k=0; k<4; k=k+1)
        for(a=0; a<5; a=a+1)
          for(i=0;i<4;i=i+1)
             ges_pkte[k][a] = ges_pkte[k][a]+
                                     matrix_a[k][a]* matrix_b[k][a];
    

    Thx für jede hilfe

    Cu DrSnow



  • Spontan würde ich sagen, dass die Variablen in den for() {...}- Schleifen zu groß werden.
    Bsp.: Bei dir kann die Variable k die Größe 4 annehmen, da der Array ges_Punkte aber 4 Elemente hat, dürfte der Wert maximal 3 lauten (ges_Punkte[0], ges_Punkte[1], ges_Punkte[2], ges_Punkte[3]); dieses Problem tritt öfters in deinem Code auf (weiß aber nicht, ob das der Fehler ist).
    Andere Möglichkeit:

    ges_pkte[k][a] = ges_pkte[k][a]+ 
    matrix_a[k][a]* matrix_b[k][a];
    

    In der Variablendeklaration ist der Array matrix_b aber nur eindimensional.
    Ich hoffe, das dir das weiterhilft.
    MfG



  • Das weiss ich auch nicht ob es daran liegt habe sie aber auch schon mal testweise nur kleiner gemacht die Zahlen und ich bekomme immer noch die selbe Fehlermeldung.

    Was meinst du eigentlich hiermit

    ges_pkte[k][a] = ges_pkte[k][a]+  
    matrix_a[k][a]* matrix_b[k][a];
    

    Weil so hab ich sie ja schon in mein Programm oder das vielleicht dort der Fehler liegt??

    Aber trotzdem Danke für deine Hilfe.

    Cu DrSnow



  • Johannes H. schrieb:

    In der Variablendeklaration ist der Array matrix_b aber nur eindimensional.

    int matrix_b [5] = {3,2,1,2,3};     //eindim. Array
        int ges_pkte [4] = {0,0,0,0};   //eindim. Array
    ...
        ges_pkte[k][a] = ...  //hier behandelst du ges_pkte und matrix_b so
        ... matrix_b[k][a];   //als wären sie zweidim. => Fehler
    


  • Ich habe diese Passage aus deinem Code kopiert, interessant ist diese Stelle:

    matrix_b[k][a];
    

    Die Deklaration von matrix_b sieht aber so aus:

    int matrix_b [5] = {3,2,1,2,3};
    

    Mit der Variable a wird die Deklarationsdimension (tolles Wort, oder 😋 ?) nicht mehr abgedeckt; schreibe stattdessen als Deklaration:

    int matrix_b [5][6] = {3,2,1,2,3};
    

    Es kann allerdings sein, das du statt 6 Feldern 5 deklarieren muss (s. oberen Beitrag). Das selbe gilt für die Deklaration von ges_pkte.
    MfG

    EDIT: Mist, zu spät.



  • Ich hab das Problem gelöst

    {
        int matrix_a [4][5] = {  {3,15,10,30,14},
                                 {16,12,12,24,8},
                                 {8,5,15,20,20},
                                 {10,8,14,10,25},
                                 };
        int matrix_b [5] = {3,2,1,2,3};
    
        int ges_pkte [4] = {0,0,0,0};
        int a,k,i;
    
     for(k=0; k<4; k=k+1)
        for(a=0; a<5; a=a+1)
             ges_pkte[k] = ges_pkte[k] + matrix_a[k][a] * matrix_b[a];
    

    Thx für eure mithilfe

    Cu DrSnow


Anmelden zum Antworten