Top Down Prinzip bzw switch
-
Hallo!
Erstmal Hallo, bin neu hier im Forum (:
Beschäftige mich zu Hause bzw auch in der Schule intensiv mit c++ (Ausbildung zum Informations Technischen Assistent + Fach Abi auf einem Berufskolleg).
Meine Frage bezieht sich nun auf folgendes:Wir beschäftigen uns grad mit dem "Top Down Prinzip der Programmierung".
Es sind alles Prozeduren!Meine Frage nun!
Es gibt folgendes:
void f1()
// Anweisungvoid f2()
// Anweisungvoid f3()
// Anweisungvoid f4()
// AnweisungUnd es sollen für die Zahlen a und b (double a,b) folgende Rechnungen ausgeführt werden:
Für f1: a+b
Für f2: a*b
Für f3: a-b
Für f4: a/bvoid f1() { } void f2() { } void f3() { } void f4() { } void main() { double a,b; char wahl; cout << "f1:[1]\nf2:[2]\nf3:[3]\nf4:[4]\n\n "; do wahl=getch(); while(wahl>'4' || wahl<'1'); switch(wahl-48) { case 1:f1();break; case 2:f2();break; case 3:f3();break; case 4:f4();break; } }
Also, ich habe nun keine Ahnung, wie ich das Programm dazu bringe, dass es bei Eingabe der Zahl 1 z.B. die Addition ausführt.
Das void main() hab ich ja stehen und müsste auch richtig sein!
Wäre sehr nett, wenn Ihr mich nett aufnehmen würdet und mir helfen würdet *gg*
Vielen Dank!
M.f.G.
// edit: Habe die Suche benutzt, aber nichts wirklich informatives gefunden (:
-
Hallo!
Ok, habe es schon rausgefunden (:
Hatte mich ein bisschen vertan in Sachen switch in die Funktion f1 und so schreiben (:
Für Leute bei denen Interesse besteht, hier der Quellcode:
#include <iostream.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <string.h> void f1(double a,double b) { cout << a+b; } void f2(double a,double b) { cout << a*b; } void f3(double a,double b) { cout << a-b; } void f4(double a,double b) { cout << a/b; } void main() { double a=2,b=5; char wahl; cout << "f1:[1]\nf2:[2]\nf3:[3]\nf4:[4]\n\n "; do wahl=getch(); while(wahl>'4' || wahl<'1'); switch(wahl-48) { case 1:f1(a,b);break; case 2:f2(a,b);break; case 3:f3(a,b);break; case 4:f4(a,b);break; } }
M.f.G. (:
-
Zwei Dinge finde ich ein wenig komisch:
Was soll das?switch(wahl-48)
und das mit der Beschränkung auf vier Möglichkeiten könntest du besser mit einem
"default:"-case am Ende der Mehrfachabfrage machen
MfG Jomi
-
Also das -48 bezieht sich auf den ASCII Code.
Das void main() habe ich so von meinem Lehrer bekommen!Ich vermute ma es liegt damit zusammen, da die Taste 1 den Wert 49 erzeugt, dass er imma 48 abziehen muss, damit er auf den gewünschten Wert kommt!
D.h.:
Taste 1=49, man will aba den Wert 1, deswegen -48 = 1!
Taste 2=50, man will aba den Wert 2, deswegen -48 = 2!
usw.Und das mit dem:
"default:"-case
Den Befehl habe ich noch nicht, d.h. wir dürfen Ihn auch noch nicht benutzen (:
Aber danke für deine Hilfe (:M.f.G.
//edit:
nun hier mal mein vollendeter Code:
void eingabe(double a,double b) { cout << "Geben sie A und B ein: "; cin >> a >> b; } void f1(double a,double b) { cout << a+b; } void f2(double a,double b) { cout << a*b; } void f3(double a,double b) { cout << a-b; } void f4(double a,double b) { cout << a/b; } void main() { double a,b; char wahl; cout << "Geben sie die erste Zahl ein:" << '\t'; cin >> a; cout << "Geben sie die zweite Zahl ein:" << '\t'; cin >> b; cout << "f1:[1 a+b]\nf2:[2 a*b]\nf3:[3 a-b]\nf4:[4 a/b]\n\n "; cout << "Geben sie die gewünschte Rechenoperation ein:" << '\t'; cin >> wahl; while(wahl>'4' || wahl<'1'); switch(wahl-48) { case 1:f1(a,b);break; case 2:f2(a,b);break; case 3:f3(a,b);break; case 4:f4(a,b);break; } }
-
Servus!
Erstmal etwas grundsätzliches:
Bitte KEIN iostream.h!, (Stattdesen iostream im namespace std;)
Beispiel:#include <iostream> using namespace std; // Kann auch weggelassen werden, dann musst du aber für jede Funktion oder jedes Objekt aus iostream ein std:: davorschreiben. z.B. // std::cout << "irgendwas" << std::endl;
Bitte KEIN void main() (das ist KEIN Standard, stattdessen int main()!)
So, nun aber zu deinem Problem. ich würde die vier "Rechenfunktionen" so schreiben: (Am Beispiel der Additions-Funktion)
inline double addiere(const double& arg1, const double& arg2) { return (arg1 + arg2); }
(Das kannst du ja auf die anderen Funktionen übertragen.)
Nun kannst du - soferen du diese Funktion in einem switch() aufrufen willst, z.B. folgendes schreiben:
unsigned int auswahl = 0; double wert1 = 0; wert2 = 0; ergebnis = 0; // ... // Auswahl + Werte einlesen. // ... switch(auswahl) { case 1: ergebnis = addiere(wert1, wert2); break; case 2: ergebnis = subtrahiere(wert1, wert2); break; // .... usw... } std::cout << "\nErgebnis: " << ergebnis << std::endl; // .... // Weiter im Programm. // ....
//edit: @thorsten Sorry, während meines Schreibens ist hier ja schon was passiert, aber ich denke, dass insbesondere meine ersten Sätze, trotzdem noch lesenswert sind.
Caipi
-
Dazu muss ich dich mal das eine fragen:
tH0RsT3n schrieb:
Also das -48 bezieht sich auf den ASCII Code.
FRAGE:Warum benutzt du nicht einfach ne
int wahl;
Variable?
Da brauchst du dann auch nichts abziehen.
(Ich hatte erst die char-Variable die du eingesetzt hast übersehen, sorry)
Ach eins wollt ich noch sagen dein code dürfte nicht funktionieren, da du die beiden Zahlen in der Funktion eingeben lässt:void eingabe(double a,double b) { cout << "Geben sie A und B ein: "; cin >> a >> b; }
Das musst in der main-Funktion machen oder mit Referenzen:
... double& a; double& b; ... void Eingabe(double& a, double& b) { cout<<"Bitte geben sie zwei Zahlen ein: "; cin<<a<<b; }
MfG Jomi
-
Danke an Euch (:
@ Caipi, könntest du dich mal bei mir via ICQ oda so melden?
Danke an den Rest (:
Korrekt von Euch *g*
Aber ist ja alles gut und schön, nur ist mir so manches noch zu kompliziert *gg* Später vllt (:M.f.G.
-
tH0RsT3n schrieb:
@ Caipi, könntest du dich mal bei mir via ICQ oda so melden?
Hab dich bei mir hinzugefügt, musst mir eine Erlaubnis erteilen ...
Caipi
-
Jomi schrieb:
Dazu muss ich dich mal das eine fragen:
tH0RsT3n schrieb:
Also das -48 bezieht sich auf den ASCII Code.
FRAGE:Warum benutzt du nicht einfach ne
int wahl;
Variable?
Da brauchst du dann auch nichts abziehen.
(Ich hatte erst die char-Variable die du eingesetzt hast übersehen, sorry)
Ach eins wollt ich noch sagen dein code dürfte nicht funktionieren, da du die beiden Zahlen in der Funktion eingeben lässt:void eingabe(double a,double b) { cout << "Geben sie A und B ein: "; cin >> a >> b; }
Das musst in der main-Funktion machen oder mit Referenzen:
... double& a; double& b; ... void Eingabe(double& a, double& b) { cout<<"Bitte geben sie zwei Zahlen ein: "; cin<<a<<b; }
MfG Jomi
Hallo!
Ja sry, dat is mir da reingerutscht am Ende, als ich kopieren wollte!
Also es ist weg da!Hab nun mim Caipi gessan Nacht den Quellcode noch bissl optimiert *hehe* Thx nomma (:
M.f.G.