Maximum eines Arrays bestimmen



  • Guten Abend zusammen,

    ich bereite mich gerade auf eine C++ Klausur vor, und hänge hier gerade an einer wie ich eigentlich dachte einfachen Übungsaufgabe. Die Aufgabe ist das Maximum eines zweidimensionalen Arrays mit Hilfe einer Funktion zu bestimmen. Ich steh aber glaube ich im Moment total auf dem Schlauch.
    Als Fehlermeldung gibt mir mein Compiler folgendes aus:

    cannot convert `double' to `double ()[7]' for argument `1' to `double maximum(double ()[7])'

    Der Quellcode sieht wie folgt aus:

    #include<iostream>
    
    using namespace std;
    
    double maximum(double matrix[5][7])
    {
           double max=matrix[0][0];
           int i,j;
           for(i=0;i<=4;i++)
           {
               for(j=0;j<=6;j++)
               {
                   if (max<matrix[i][j])
                   {
                       max=matrix[i][j];
                   }
               }
           }
           return (max);
    }
    
    int main()
    {  
        double matrix[5][7]={0},maximal;
        maximal=maximum(matrix[5][7]);
        cout<<maximal;
        cin.get();
    }
    

    Also so wie ich die Fehlermeldung verstehe hat er beim konvertieren Probleme, da ja "maximal" double ist und "matrix" ein array. Aber ich bekomme doch ein double, nämlich "max" von der Funktion zurück, oder? Wo liegt denn hier der Denkfehler???

    Vielen Dank für eure Hilfe, ich wage mich mal an die nächste Aufgabe und hoffe auf mehr Erfolg 🙂



  • matrix[5][7] ist aber kein Array, sondern ein double.



  • int main()
    {  
        double matrix[5][7]={0},maximal;
        maximal=maximum(matrix); // Da isser
        cout<<maximal;
        cin.get();
    }
    

    Wenn die Funktion double[5][7] erwartet, dann bekommt sie das auch. matrix[5][7] ist nicht das Array sondern ein (ungültiger!!!) Indexzugriff, liefert also den Typ double zurück.



  • Oh man... Wie doof kann man denn sein???

    Klar ich übergebe ja nur den Wert, der an der Stelle [5][7] steht... Dumm, dumm, dumm... Vielen Dank!

    Tut jetzt alles.


Anmelden zum Antworten