Funktionen



  • Hi @all
    hab ein problem, hab vor paar tagen mit c++ angefangen und komm ez da net weiter
    wenn ich den Quelltext ausführe kommt nur ein schwarzes konsolenfenster sonst nichts 😞

    #include <iostream.h>
    #include <math.h>
    
    int eingabe ( int ml, int durchmesser);
    int berechnung ( int flaeche, int durchmesser,  int quadratmeter , int mal, int wasser);
    int ausgabe ( int wasser) ;
    
    int main()
    {
    
     int eingabe ;
     int berechechnung;
     int ausgabe;
    
     getchar ();
     return 0;
    
      }
     int eingabe ()
     {
     int ml;
     int durchmesser ;
    
     cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
     cin>> ml;
     cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
     cin>> durchmesser;
                     getchar();
     return 0;
     }
    
     int berechnung ()
     {
     int flaeche     ;
     int durchmesser ;
     int mal  ;
     int ml ;
     int wasser;
     int quadratmeter = 1;
    
      flaeche = durchmesser * (pow(M_PI , 2 ));
      mal = quadratmeter/flaeche;
      wasser=mal * ml;
          getchar();
       return 0;
      }
    
      int ausgabe ()
     {
     int wasser ();
    
     cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet";
          getchar();
       return 0;
       }
    

    kann mir jemand helfen?
    Das Programm soll errechnen wie viel Wasser es auf einen quadratmeter geregnet hat, und man hat als anhaltspunkt nur ein Regenwasserröhrchen. Die Parameter wie viel Wasser im Röhrchen ist und was für einen Durchmesser es besizt wird vom Benutzer gegeben.

    Wär echt nett wenn ihr mir helfen könntet. 😋
    Und bitte keine Kommentare wie weiß doch jeder oder sieht man doch gleich. 😉

    mfg



  • Ist doch offensichtlich, dass du die Funktionen nirgends aufrufst. 🤡

    Und formatier deinen Code vernünftig, das ist ja grausam! Am schlimmsten finde ich die ; 😮



  • Die main-Funktion repräsentiert das Hauptprogramm. In ihr sagst du, was das Programm machen soll.
    Daraus folgt... was in der main nicht steht, wird nicht gemacht.

    Alles das du machst ist:

    1. 3 Variablen definieren.
    2. Das Programm anhalten.
    3. Rücksprung zum Betriebssystem, womit das Programm beendet ist.

    int main()
    {
     // 1.
     int eingabe;
     int berechechnung;
     int ausgabe;
    
     getchar (); // 2.
     return 0;   // 3.
    }
    


  • und in den methoden rechnest du zwar schön rum, gibst aber immer 0 zurück ... das kompiliert zwar fehlerlos ( da return 0; das int als Rückgabe erfüllt) dürfte aber deiner Programmlogic hinderlich sein ...

    ausserdem definierst du 3 methoden die du nicht implementierst:

    int eingabe ( int ml, int durchmesser);
    int berechnung ( int flaeche, int durchmesser,  int quadratmeter , int mal, int wasser);
    int ausgabe ( int wasser) ;
    

    und noch 2 andere die du definierst und implementierst:

    int berechnung ()
    {
    // inhalt egal
    }
    
    int ausgabe ()
    {
    // inhalt egal
    }
    

    aber wie schon gesagt nicht ausführst...



  • padreigh schrieb:

    ausserdem definierst du 3 methoden die du nicht implementierst

    ausserdem deklarierst du 3 methoden die du nicht implementierst

    padreigh schrieb:

    und noch 2 andere die du definierst und implementierst:

    Methode definieren = Methode implementieren

    :p



  • Ez hab ichs so gemacht:

    #include <iostream.h>
    #include <math.h>
    
    int berechnung ( int flaeche,   int quadratmeter , int mal, int wasser, int ml, int durchmesser);
    
    int berechnung()
    
    {
    int flaeche;
    int mal;
    int wasser;
    int ml;
    int durchmesser;
    int quadratmeter = 1;
    
     cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
     cin>> ml;
     cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
     cin>> durchmesser;
    
      flaeche = durchmesser * (pow(M_PI , 2 ));
      mal = quadratmeter/flaeche;
      wasser=mal * ml;
    
       cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet";
       return wasser;
       }
    
    int main()
    {
    int wasser;
    cout<<wasser;
    getchar();
    return 0;
    }
    

    da bekomm ich dann 31990200 zurück
    aber ich sag dem doch das ich was eingeben will

    ich verzweifel noch 😕

    mfg

    ps
    besser gesagt kommt immer was anderes


  • Mod

    SC2 schrieb:

    da bekomm ich dann 31990200 zurück
    aber ich sag dem doch das ich was eingeben will

    Nö. Gleiches Problem wie vorher. Du rufst deine Funktionen gar nicht erst auf. Stattdessen gibst du bloß einen uninitialisierten int aus.



  • und wie ruf ich die funktion dann in main auf?????? 😕 😕



  • SC2 schrieb:

    und wie ruf ich die funktion dann in main auf?????? 😕 😕

    Soll das etwa so sein?

    //blah...
    int main()
    {
        int wasser = berechnung();  //Hier führst du deine Funktion berechnung aus und weist den Wert der Variable wasser zu
        cout<<wasser;  //Hier wird wasser ausgegeben. Tipp: Besserer Stil ist es, wenn du ein << endl hinzufügst (bzw. << "\n")
        getchar();  //Warten auf Bestätigung
        //return 0;  unnötig in C++ und ab ANSI C XX (90 oder 99, weiß nicht mehr)
    }
    


  • SC2 schrieb:

    und wie ruf ich die funktion dann in main auf?????? 😕 😕

    so:

    Funktionsname(Funktionsparameter)
    

    Um den 'return' Wert zu übernehmen natürlich so:

    Variable_die_return_haben_soll = Funktionsname(Funktionsparameter)
    


  • ja so ruft er dann die funktion auf aber als ergebniss kommt 0 raus
    hab ich dann nen denkfehler in meiner rechnung oder hab ich wo nen falschen datentyp gewählt und ich sehs nur net?

    mfg


  • Mod

    SC2 schrieb:

    und wie ruf ich die funktion dann in main auf?????? 😕 😕

    Indem du ihren Namen dahin schreibst gefolgt von den Parametern (hier keine) in Klammern.

    Aber dein Programm ist sowas von wirr, du solltest es erstmal mit dem Lernen etwas langsamer angehen und nicht zu viel auf einmal versuchen.

    Außerdem solltest du dein Lehrmaterial wegschmeißen und dir etwas zulegen, dass von jemandem geschrieben wurde, dessen C++ Kenntnisse nicht 12 Jahre veraltet sind.



  • SC2 schrieb:

    ja so ruft er dann die funktion auf aber als ergebniss kommt 0 raus
    hab ich dann nen denkfehler in meiner rechnung oder hab ich wo nen falschen datentyp gewählt und ich sehs nur net?

    mfg

    Die Funktionen übergeben mit Hilfe von "return" Variablen bzw. Werte.

    return 0; bewirkt also, dass als Wert die Null übergeben wird.
    return Variable; übergibt eine Variable



  • SC2 schrieb:

    ja so ruft er dann die funktion auf aber als ergebniss kommt 0 raus
    hab ich dann nen denkfehler in meiner rechnung oder hab ich wo nen falschen datentyp gewählt und ich sehs nur net?

    mfg

    Stichwort Integer-Division.

    flaeche = durchmesser * (pow(M_PI , 2 ));
    Jetzt ist fläche eine Ganzzahl mit Inhalt 9. (weil abgerundet)

    mal = quadratmeter/flaeche;
    Wenn du 1 durch 9 teilst und wieder abrundest, kommt 0 raus.

    wasser=mal * ml;
    Und hier entsprechend auch.

    Wähle float oder double als Datentyp für diese Zahlen, dann wirst du dieses Problem nicht mehr haben.



  • schon klar aber hab ich da irgendwo return 0 :

    #include <iostream.h>
    #include <math.h>
    
    int berechnung ( int flaeche,   int quadratmeter , int mal, int wasser, int ml, int durchmesser);
    
    int berechnung()
    
    {
    int flaeche;
    int mal;
    int wasser;
    int ml;
    int durchmesser;
    int quadratmeter = 1;
    
     cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
     cin>> ml;
     cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
     cin>> durchmesser;
    
      flaeche = durchmesser * (pow(M_PI , 2 ));
      mal = quadratmeter/flaeche;
      wasser=mal * ml;
    
       cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet.";
       return wasser;
       }
    
    int main()
    {
    int wasser = berechnung ();
    cout<<wasser;
    getchar();
    
    }
    

    mfg



  • lol epic fail ich bin so doof...

    ja danke an alle dass ihr mir so subba geholfen habt
    echt ein klasse forum hier 😉 👍

    dann wünsch ich allen mal ne gute nacht

    mfg



  • SC2 schrieb:

    #include <iostream.h>
    #include <math.h>
    

    Dies ist schonmal kein gültiges C++. Die Header der C++ Standardbibliothek werden ohne die Endung .h inkludiert, und bei den C-Kompatibilitätsheadern wird zudem noch ein c an den Namen vorangestellt. Gleichzeitig liegen diese Header im Namensraum std.

    Und zudem ist dein Programm noch immer bescheiden eingerückt:

    #include <iostream>
    #include <cmath>
    
    using namespace std; // Bitte niemals im Header, und immer nach allen Includes.
    
    // Variablen sollte man erst vor der ersten Benutzung deklarieren. Zudem wären
    // aussahgekräftigere Variablennamen besser. Was soll man bitte unter "int wasser",
    // "int mal" verstehen?
    int berechnung()
    {
        cout << "Bitte geben Sie den Stand im Roehrchen in ml an:";
        int ml,
        cin >> ml;
        cout << "Bitte geben Sie den Durchmesser der Roehrchens an:";
        int durchmesser;
        cin >> durchmesser;
    
        int flaeche = durchmesser * (pow(M_PI, 2));
        int liter = (quadratmeter / flaeche) * ml;
    
        cout << " Es hat " << liter << " l auf den Quadratmeter geregnet.";
        return liter;
    }
    
    int main()
    {
        int liter = berechnung();
        cout << liter;
        getchar();
    }
    


  • In dem Programm wird übrigens die Wassermenge 2 mal ausgegeben: Einmal in der Funktion, und einmal in der main().



  • hi @ all ich bins nochmal :p

    folgendes ich hab jezt aus der einen funktion zwei funktionen gemacht, dass sieht dann so aus:

    #include <iostream.h>
    #include <math.h>
    
    int frage ( int ml, int durchmesser){
    
        cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
        cin>> ml;
        cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
        cin>> durchmesser;
        return 0;
    }
    
    float berechnung ( float flaeche, float quadratmeter,float mal,
                       int wasser, float ml, float durchmesser){
    
        quadratmeter=1;
        flaeche = durchmesser * (pow(M_PI , 2 ));
        mal = quadratmeter/flaeche;
        wasser=mal * ml;
        cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet.";
        return wasser;
       }
    
    int main()
    {
    int frage = frage ();
    float wasser = berechnung (float);
    
    getchar();
    
    }
    

    Der Compiler sagt dazu:
    1. [C++ Fehler] Neu.cpp(28): E2314 Aufruf einer Nicht-Funktion
    2. [C++ Fehler] Neu.cpp(29): E2188 Ausdruckssyntax
    3. [C++ Fehler] Neu.cpp(29): E2193 Zu wenige Parameter im Aufruf von 'berechnung(float,float,float,int,float,float)'
    4. [C++ Warnung] Neu.cpp(33): W8004 'wasser' wurde ein Wert zugewiesen, der nie verwendet wird.
    5. [C++ Warnung] Neu.cpp(33): W8004 'frage' wurde ein Wert zugewiesen, der nie verwendet wird.

    kann mir mal einer auf die sprünge helfen ich komm einfach nicht weiter 😞

    mfg



  • SC2 schrieb:

    hi @ all ich bins nochmal :p

    folgendes ich hab jezt aus der einen funktion zwei funktionen gemacht, dass sieht dann so aus:

    #include <iostream.h>
    #include <math.h>
    
    int frage ( int ml, int durchmesser){
    
        cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
        cin>> ml;
        cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
        cin>> durchmesser;
        //ml und durchmesser werden nie verwendet
        return 0;  //du kannst genausogut void frage() schreiben und nichts zurückgeben
    }
    
    float berechnung ( float flaeche, float quadratmeter,float mal,
                       int wasser, float ml, float durchmesser){
    
        quadratmeter=1;  //was bringt das?? Du überschreibst den alten Wert!
        flaeche = durchmesser * (pow(M_PI , 2 ));
        mal = quadratmeter/flaeche;
        wasser=mal * ml; //vorsicht, Rundung! (Beabsichtigt?)
        cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet.";
        return wasser; //Du gibst einen int zurück, aber die Funktion hat den Return-Typ float
       }
    
    int main()
    {
    int frage = frage ();  //Nenne nie zwei Sachen gleich!! UND zu wenige parameter
    float wasser = berechnung (float);  
    /*1. du musst variablen übergeben, keine typen
      2. du muss 5 variablen an deine funktion übergeben
      3. Das Speichern bringt dir nichts (auch nicht bei int frage*/
    
    getchar();
    
    }
    

    Der Compiler sagt dazu:
    1. [C++ Fehler] Neu.cpp(28): E2314 Aufruf einer Nicht-Funktion
    2. [C++ Fehler] Neu.cpp(29): E2188 Ausdruckssyntax
    3. [C++ Fehler] Neu.cpp(29): E2193 Zu wenige Parameter im Aufruf von 'berechnung(float,float,float,int,float,float)'
    4. [C++ Warnung] Neu.cpp(33): W8004 'wasser' wurde ein Wert zugewiesen, der nie verwendet wird.
    5. [C++ Warnung] Neu.cpp(33): W8004 'frage' wurde ein Wert zugewiesen, der nie verwendet wird.

    kann mir mal einer auf die sprünge helfen ich komm einfach nicht weiter 😞

    mfg

    Kommentare im Code.
    Vorschlag: klein anfangen und erstmal Buch lesen, dann größere Programme schreiben.



  • habs geschaft

    #include <iostream.h>
    #include <math.h>
    
    float ml;
    float durchmesser;
    
    int frage (){
    
        cout<< "Bitte geben Sie den Stand im Roehrchen in ml an:";
        cin>> ml;
        cout<< "Bitte geben Sie den Durchmesser der Roehrchens an:";
        cin>> durchmesser;
        return 0;
    }
    
    void berechnung (){
    
            float mal;
            float flaeche;
            float wasser;
            int   quadratmeter;
    
        quadratmeter=1;
        flaeche = durchmesser * (pow(M_PI , 2 ));
        mal = quadratmeter/flaeche;
        wasser=mal * ml;
        cout<<" Es hat "<<wasser <<" l auf den Quadratmeter geregnet.";
    
       }
    
    int main()
    {
    int antwort = frage ();
    berechnung ();
    
    getchar();
    
    }
    

    gn8


Anmelden zum Antworten