Programm zur Prozentrechnung
-
Hallo, ich habe hier ein Problem mit meinem Programm zur Prozentrechnung.Ich habe schon alles durchgeschaut und weiß nicht warum das Programm mir nicht das Ergebnis ausgibt, sondern jedesmal 0.00.
Wenn sich jemand die Mühe machen könnte um mal drüber zu schauen wär ich sehr dankbar.
Hier der Code:
#include <iostream> #include <conio.h> #include <stdlib.h> #include <iomanip> #include <cmath> using namespace std; double prozent(int ausw, double P, double G, double W); int main() { int auswahl = 0; double ergebnis = 0.0; double W = 0.0; double G = 0.0; double p = 0.0; char antwort; do { cout << "Prozentrechner Next_Generation\n" << "==============================\n" << "[1]Grundwert berechnen\n" << "[2]Prozentwert berechnen\n" << "[3]Prozentsatz berechnen\n" << "[0]Beenden\n\n" << "Waehlen sie ein Menue aus: "; cin >> auswahl; system ("cls"); if ( auswahl == 0) return 0; ergebnis = prozent (auswahl, W, G, p); if ( auswahl == 1 ) { cout << "Alle Angaben mit Kommastellen müssen mit einem Punkt geschrieben werden!\n\n"; cout << "Geben sie bitte den Prozentwert (W) an: "; cin >> W; cout << "\nGeben sie bitte den Prozensatz (p) an: "; cin >> p; cout << "\n\nDer Grundwert lautet: " << setprecision(2) << fixed << ergebnis; } else if ( auswahl == 2 ) { cout << "Alle Angaben mit Kommastellen müssen mit einem Punkt geschrieben werden!\n\n"; cout << "Geben sie bitte den Prozensatz (p) an: "; cin >> p; cout << "\nGeben sie bitte den Grundwert (G) an: "; cin >> G; cout << "\n\nDer Prozentwert lautet: " << setprecision(2) << fixed << ergebnis; } else if ( auswahl == 3 ) { cout << "Alle Angaben mit Kommastellen müssen mit einem Punkt geschrieben werden!\n\n"; cout << "Geben sie bitte den Prozentwert (W) an: "; cin >> W; cout << "\nGeben sie bitte den Grundwert (G) an: "; cin >> G; cout << "\n\nDer Prozentsatz lautet: " << setprecision(2) << fixed << ergebnis; } cout << "\n\nWollen sie zurueck ins Menue?\n" << "< J/N >"; cin >> antwort; system ("cls"); }while ( antwort == 'j'); } double prozent(int ausw, double p, double G, double W) //Funktion zur Prozentrechnung { double res = 0.0; switch(ausw) { case 1 : { res = (W * 100) / p; break; } case 2 : { res = (p * G) / 100; break; } case 3 : { res = (W * 100) / G; break; } } return res; }
-
Zeile 36
Du übergibst deiner Funktion Werte die noch gar nicht vom Benutzer eingegeben wurden. Deine Eingabe findet viel später im Programm statt und somit übergibst du deiner Funktion, deine Anfangswerte die du zu Begin des Programmes auf 0.0 gesetzt hast;) Es sollte reichen wenn due die Funktion nach deinen Eingaben aufrufst.
-
Du liest die Parameter NACH der Berechnung ein. Das ist das Problem.
ergebnis = prozent (auswahl, W, G, p);
einfach hinter die jeweilige Eingabe und es sollte funktionieren. Bei einer Eingabe von 1 oder 3 müsste er momentan sogar abstürzen.
EDIT: Zu langsam.

-
Ouuw... Ja klar ^^ danke für die Hilfe

Also bisher ist es noch nicht abgestürzt - vll liegts ja an dem DEV C++ ^^
-
Nun, wenn die Werte alle mit 0 initialisert sind und du die Funktion aufrufst, teilst du durch 0, was nie gut ist.

-
Der Herr Ries hatte ja schon das gleiche Problem:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-211557-and-highlight-is-prozent.html
Darf ich fragen, wo es diese Aufgabe gibt?