Zum Inhalt springen

Taschenrechner Programmieren


TripleD

Empfohlene Beiträge

Hallo,

mach seit letztem Jahr ne Ausbildung als FiSi.

Wir haben da in der Schule mit C++ angefangen,

und ich hab nichts kappiert.

Jetzt hab ich irgendwie bock das zu lernen.

Beschäftige mich auch schon damit, und fang mal mit nem Taschenrechner Programm an.

Ich hab das jetzt soweit fertig, aber irgendwie geht das nicht.

Kann mir da mal vieleicht jemand helfen??

Hier mein Code:

#include <iostream.h>

#include <stdlib.h>

#include <math.h>

void main(void)

{

int zahl1;

int zahl2;

int ergebnis;

int ausw;

char ('a' || 'A'); //Addieren

char ('s' || 'S'); //Subtrahieren

char ('m' || 'M'); //Multiplizieren

char ('d' || 'D'); //Dividieren

char ('b' || 'B'); //Beenden

Menue:

cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl;

cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl;

cout<<"m/M = Multiplizieren oder d/D = Dividieren ein.\n"<<endl;

cin>>"Bitte Auswaehlen: ">>ausw;

/*Addieren*/

if(ausw=='a')

{

cout<<"Bitte erste Zahl eingeben: ";

cin>>zahl1;

cout<<"Bitte zweite Zahl eingeben: ";

cin>>zahl2;

ergebnis = zahl1+zahl2;

cout<<"Das Ergebnis lautet: "<<ergebnis;

cout<<"\n\n";

goto Menue;

}

/*Subtrahieren*/

else if(ausw=='s'||'S')

{

cout<<"Bitte erste Zahl eingeben: ";

cin>>zahl1;

cout<<"Bitte zweite Zahl eingeben: ";

cin>>zahl2;

ergebnis = zahl1-zahl2;

cout<<"Das Ergebnis lautet: "<<ergebnis;

cout<<"\n\n";

goto Menue;

}

/*Multiplizieren*/

else if (ausw=='m'||'M')

{

cout<<"Bitte erste Zahl eingeben: ";

cin>>zahl1;

cout<<"Bitte zweite Zahl eingeben: ";

cin>>zahl2;

ergebnis = zahl1*zahl2;

cout<<"Das Ergebnis lautet: "<<ergebnis;

cout<<"\n\n";

goto Menue;

}

/*Dividieren*/

else if (ausw=='d'||'D')

{

cout<<"Bitte erste Zahl eingeben: ";

cin>>zahl1;

cout<<"Bitte zweite Zahl eingeben: ";

cin>>zahl2;

ergebnis = zahl1/zahl2;

cout<<"Das Ergebnis lautet: "<<ergebnis;

cout<<"\n\n";

goto Menue;

}

else if (ausw=='b'||'B')

{

cout<<"Programm wird beendet"<<endl;

return 0;

}

}

Freu mich auf ne Antwort.

Puma00

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Idefix,

danke für die schnelle Antwort.

Habs gleich mal so umgeändert, wie du es gesagt hast.

Und TATA es klappt.

Wenn das mit goto nichts ist, wie mach ich das dann? Mit Schleifen????

Gibt es eigentlich auch eine möglichkeit, das Dosfenster länger offen zu lassen?

Sobald ich was ausgeführt hab schließt es sich, und ich kann das Ergebnis nicht lesen.

Puma00

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Puma00

Hallo,

(...)

int ausw;

(...)

Menue:

cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl;

cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl;

cout<<"m/M = Multiplizieren oder d/D = Dividieren ein.\n"<<endl;

cin>>"Bitte Auswaehlen: ">> ausw ;

Ich glaub Du solltest Dir den Datentyp der Variable ausw mal angucken. :floet: sonst könnte das Programm nicht ganz funktionieren...

Gibt es eigentlich auch eine möglichkeit, das Dosfenster länger offen zu lassen?

Sobald ich was ausgeführt hab schließt es sich, und ich kann das Ergebnis nicht lesen

Mach halt z.B. noch ein cin mit der Frage "Wollen Sie beenden J/N" und wenn man nicht beenden will, gehts halt nochmal zum Beginn. Das Programm könnte man in eine DoWhile-Schleife packen, und die Endebedingung von dem J/N-cin abhängig machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Puma00

#include <iostream.h>

Das ist veraltet. Verwende

#include <iostream>

Wenn du nicht vor jedes cin und cout std:: schreiben willst, auch noch

using namespace std;

#include <stdlib.h>

#include <math.h>

Die beiden brauchst du gar nicht.

void main(void)
Das muss int main() heißen.

char ('a' || 'A'); //Addieren

char ('s' || 'S'); //Subtrahieren

char ('m' || 'M'); //Multiplizieren

char ('d' || 'D'); //Dividieren

char ('b' || 'B'); //Beenden

Diese Zeilen bewirken nichts, die kannst du also auch weglassen.

else if(ausw=='s'||'S')

else if (ausw=='m'||'M')

else if (ausw=='d'||'D')

else if (ausw=='b'||'B')

Das ist nicht das, was du willst. Hier wird das Ergebnis des Vergleichs (ausw == Zeichen) mit einem anderen Zeichen logisch oder-verknüpft. Das Ergebnis ist, weil das Zeichen nicht das Nullzeichen ist, immer wahr. Was du meinst, ist:

else if (ausw=='m' || ausw=='M')

usw.

Link zu diesem Kommentar
Auf anderen Seiten teilen

if(ausw=='s'||'S') ?

wenn ausw=='s' oder 'S'

das wird im wahr sein weil 'S' immer ungleich 0 ist

besser

if( (ausw=='s') || (ausw=='S'))

du kannst ja mal deine if else abfrage in

switch(ausw)

{

case 's':

case 'S':

//Quelltext

break;

case 'b':case 'B':

return 0;

}

goto menue;

änderen

danach sollten wir goto wegnehmen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Idefix (und alle anderen die das auch nicht verstehen:D ),

nach dem ich eine Berechnung gemacht habe (z.B. Addition), würd ich gern eine Abfrage rein machen, ob der User nochmal eine Addition starten möchte, eine andere Rechenform (Subtraktion,Multiplikation,.....) oder ob er das Programm beenden möchte.

Ist das so jetzt verständlicher?

Puma00

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür hast du doch goto Menue eingebaut?

wie wärs mit n für noch mal

die Variablen

int zahl1;

int zahl2;

haben doch dann noch die Werte.

Muß dir nur noch merken welches das letzte Menue war.

g für (keine Ahnung)

setzt eine Variable die das einlesen der zahlen unterbindet

und wieder

goto menue;

Wird wahrscheinlich richtig unübersichtlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Lösungsvorschlag:

wie gesagt goto stört irgendwie

////////////////////////////////////////////

void ZahlenEingeben(int& z1,int& z2)

{

	cout<<"Bitte erste Zahl eingeben: ";

	cin>>z1;

	cout<<"Bitte zweite Zahl eingeben: ";

	cin>>z2;

}

////////////////////////////////////////////

char BerechnungsArt(char c)

{

	switch(c)

	{

	case 's':

	case 'S':

		return '-';

	case 'a':

	case 'A':

		return '+';

	default:

		return c;

	}

}

////////////////////////////////////////////

int Berechnen(char s,int z1,int z2)

{

	switch(s)

	{

	case '-':

		return z1-z2;

	case '+':

		return z1+z2;

	}


	return 0;

}

////////////////////////////////////////////

int main(int argc, char* argv[])

{

	int zahl1;

	int zahl2;

	int ergebnis;

	char ausw;

	char art;

	bool bEingabe=true;

	bool bBerechnen=false;


	cout<<"Wilkommen bei meinem Taschenrechner!\n"<<endl;


	Menue:


	cout<<"Gib a/A = Addieren, s/S = Subtrahieren,"<<endl;

	cout<<"m/M = Multiplizieren oder d/D = Dividieren ein"<<endl;

	cout<<"n/N = noch mal"<<endl;

	cout<<"b/B = beenden"<<endl;

	cin>>ausw;


	art=BerechnungsArt(ausw);


	switch(art)

	{

	case '-':

	case '+':

		if(bEingabe)

		{

			ZahlenEingeben(zahl1,zahl2);

		}

		ergebnis=Berechnen(art,zahl1,zahl2);

		bEingabe=true;

		cout<<"Das Ergebnis lautet: "<<zahl1<<art<<zahl2<<"="<<ergebnis<<endl<<endl;

		break;


	case 'n':

		bEingabe=false;

		break;


	case 'b':

		return 0;

	}


	goto Menue;

}

<EDIT: Bitte Code-Tags benutzen | Klotzkopp>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...