PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe zu einem Taschenrechner



TiduS
31.08.2008, 16:57
# include <iostream>
# include <conio.h>
using namespace std;

int Add(int zahl1,int zahl2)
{

int ergebnis=zahl1 + zahl2;
return ergebnis;
}

int Sub(int zahl1,int zahl2)
{
int ergebnis=zahl1 - zahl2;
return ergebnis;

}

int Mult(int zahl1,int zahl2)
{
int ergebnis=zahl1*zahl2;
return ergebnis;
}

int Div(int zahl1,int zahl2)
{
int ergebnis=zahl1/zahl2;
return ergebnis;
}


int main()
{
cout<<"Bitte geben Sie :\n";
cout<<"\t \"a\" fuer Addition"<<endl;
cout<<"\t \"b\" fuer Subtraktion"<<endl;
cout<<"\t \"c\" fuer Multiplikation"<<endl;
cout<<"\t und \"d\" fur Division ein"<<endl;
char Buchstabe;
cin>>Buchstabe;

switch(Buchstabe)
{
case Buchstabe='a':
cout<<"Bitte geben Sie 2 Zahlen ein,die miteinander addiert werden sollen!"<<endl;
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<Add(a,b)<<endl;
break;

case Buchstabe='b':
cout<<"Bitte geben Sie 2 Zahlen ein,die voneinander subtrahiert werden sollen!"<<endl;
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<Sub(a,b)<<endl;
break;

case Buchstabe='c':
cout<<"Bitte geben Sie 2 Zahlen ein,die multipliziert werden sollen!"<<endl;
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<Mult(a,b)<<endl;
break;

case Buchstabe='d':
cout<<"Bitte geben Sie 2 Zahlen ein,die dividiert werden sollen!"<<endl;
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<Div(a,b)<<endl;
break;
}

getch();
return 0;
}




Ietwas stimmt da nicht.
Ich möchte erreichen,das wenn man a eingibt,der darunter stehende text abgearbeitet wird,das gleich für die anderen Variablen.

staebche
31.08.2008, 17:02
als allerstes ein tipp :
benutz double für die zahlen,
denn dann kannst du auch kommazahlen rechnen.

TiduS
31.08.2008, 17:04
Das weiß ich selbst.;)
Aber das Ding soll ja nur zu Testzwecken sein,deswegen ist es egal obs double,float,int oder sonstwas ist=)

staebche
31.08.2008, 17:23
was für einen compiler hast du?

Ganz großes edit: du hast die <cstdlib.h> nich drin.
bzw ohne .h

2. edit: ich bin bissl langsam xD du musst buchstaben als
char deklarieren.

wenn du möchtest mach ich dir schnell einen taschenrechner
mit case, und break. weil bei deinem source blick ich net
duirch

kannst dich anhand von meinem orientieren

TiduS
31.08.2008, 17:36
wozu bruach ich die "du hast die <cstdlib.h> nich drin."

und: die buchstaben sind als char definiert.

staebche
31.08.2008, 17:37
wozu bruach ich die "du hast die <cstdlib.h> nich drin."

und: die buchstaben sind als char definiert.
weil cout in die <cstdlib> gehört.

also dein compiler ist?

Trick0r
31.08.2008, 17:38
cout ist aus iostream oO

TiduS
31.08.2008, 17:40
Dev C++ ist mein Compiler.

staebche
31.08.2008, 17:45
http://nopaste.free-hack.com/index.php?id=0aec6e432d

also hier mal ein beispiel der source funktioniert aufjedenfall.

TiduS
31.08.2008, 18:23
So,ich hab meinen Fehler behoben und nacheditiert...ich hätte nicht case buchstabe='a' schreiben dürfen.
Case 'a':
reicht.

staebche
01.09.2008, 17:02
So,ich hab meinen Fehler behoben und nacheditiert...ich hätte nicht case buchstabe='a' schreiben dürfen.
Case 'a':
reicht.
nur so nebenbei:
hat dir mein source geholfen, oder biste selber drauf
gekommen?

hateme666
01.09.2008, 17:48
würde dir folgendes noch empfehlen:
1. Nimm lieber Codeblocks als IDE. is der inoffizielle Nachfolger von Dev-CPP da das ja netmehr weiterentwickelt wird.

2. würde ich die conio.h entfernen un dafür einfahc anstatt getch() einfahc getchar() schreiben...macht des prog wieder kleiner und du hast keinen header aus alten Borland-tagen drin.

3. würde ich noch bei switch case einen default case machen und dort eine dann sowas wie "Fehlerhafte eingabe" ausgeben lassen, damit das prog net abstürzt oder irgendwas amcht wenn mal nicht das passende eingegebn wird.

-[RiDER]-
01.09.2008, 19:49
Hi :D

Ganz im Rahmen von "Keep it simple" wollte ich mal noch hinzufügen, dass Du den Kode z.B. folgendermaßen stark verkürzen könntest.
Ich verstehe zwar nicht Dein Verfahren, nach dem Du Kode einrückst, aber ich habe mal versucht es zu übernehmen...

int (*calc)(int, int);
switch(Buchstabe)
{
case 'a':
calc = &Add;
cout<<"Bitte geben Sie 2 Zahlen ein,die miteinander addiert werden sollen!"<<endl;
break;
case 'b':
calc = &Sub;
cout<<"Bitte geben Sie 2 Zahlen ein,die voneinander subtrahiert werden sollen!"<<endl;
break;

case 'c':
calc = &Mult;
cout<<"Bitte geben Sie 2 Zahlen ein,die multipliziert werden sollen!"<<endl;
break;

case 'd':
calc = &Div;
cout<<"Bitte geben Sie 2 Zahlen ein,die dividiert werden sollen!"<<endl;
break;
}
int a;
int b;
cin>>a;
cin>>b;
cout<<"Das Ergebnis lautet : "<<calc(a,b)<<endl;

Es fehlt noch die bereits erwähnte default-Anweisung und auch dieses Verfahren ist noch nicht das sauberste, aber es ist zumindest schonmal kürzer als das, was Du da geschrieben hattest...
Denk mal daran: (Fast) immer, wenn Du etwas mehrmals schreiben musst, solltest Du versuchen, es auf eine einzige Version zu beschränken (z.B. in Form einer Funktion, die entsprechend oft aufgerufen wird).
Das hat mehrere Vorteile. Der Kode ist übersichtlicher, weniger fehlerträchtig, kleiner (also die Größe der Programmdatei)...

Eine Entscheidung, die man aber eher bei größeren Projekten beachten muss, ist ein geeignetes Verhältnis zwischen Größe und Geschwindigkeit zu finden.
Jede Funktion kann auch als #define-Direktive vom Präprozessor unmittelbar in den Quellkode eingefügt werden, was die Geschwindigkeit des Programms erheblich erhöhen kann - die Programmdatei wird jedoch entsprechend größer.
Die andere Möglichkeit besteht darin, den oft verwendeten Kode in einer ("ganz normalen") Funktion zu verfassen. Durch das viele "Umherspringen" wird das Programm zwar langsamer, dafür wird die Programmdatei kleiner.
Gerade bei großen Projekten muss man das günstige Mittel abwägen.

Als Beispiel: Ein Programm, dass einen bestimmten Kode mehrmals aufrufen möchte - zuerst mit "normalen Funktionen" (der Sinn dieses Programms sei dahingestellt... ;) ):
#include <stdio.h>
void hello_mr_x(char *name)
{
printf("Hello %s", name);
}

int main(void)
{
hello_mr_x("Klaus");
hello_mr_x("Peter");
return 0;
}

Das Programm "hoppst" zur Funktion hello_mr_x(), wieder zurück, wieder hin, wieder zurück... dieser Kode ist zwar klein, aber langsam (in diesem Fall wird das nicht ins Gewicht fallen... aber wie gesagt, bei größeren Projekten kann es durchaus eine Rolle spielen)
Nun das Ganze mit #define-Direktiven:
#include <stdio.h>

#define hello_mr_x(name) printf("Hello %s", name);

int main(void)
{
hello_mr_x("Klaus");
hello_mr_x("Peter");
return 0;
}
Hier muss nicht "gehoppst" werden, das Programm ist schneller, aber größer. (Gut, in diesem Fall zwar nicht, aber wenn hello_mr_x() mehrere Zeilen beinhalten würde, was bei Funktionen normalerweise der Fall ist). Das nennt man dann übrigens Makros. ;)

Soweit.
GreetZ RiDER :D :D