Funktionen
-
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 willich verzweifel noch

mfg
ps
besser gesagt kommt immer was anderes
-
SC2 schrieb:
da bekomm ich dann 31990200 zurück
aber ich sag dem doch das ich was eingeben willNö. 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
-
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
-
Die Art und Weise wie du hier globale Variablen benutzt ist ganz genau die weise vor der uns die Altvorderen immer gewarnt haben. Gewöhn dir das lieber schnell wieder ab.
Alternativen die hier gut passen wäre die Übergabe von Werten an Funktionen oder eine bessere Aufteilung der Aufgabenbereiche der Funktionen.
-
und schau dir mal asc`s post noch mal an....
-
unskilled schrieb:
und schau dir mal asc`s post noch mal an....
fehlt da nicht in z.15 ein ;