Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

in

cin>>ausw;

änderen

Still ist allerdings einwenig unübersichtlich.

goto anweisungen sind zwar erlaubt, aber solltest du

von anfang an VERMEIDEN

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

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.

Hi Doham,

das hab ich auch schon gesehen und behoben, trotzdem Danke.

Ich komm trotzdem nicht weiter.

Egal was ich da eingeb (Buchstabe für Berechnungsform), er rechnet immer nur Addition.

Hiiiiiiiiiiiiiiiiiiiilfe.

Puma00

:confused: :confused: :confused: :confused:

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.

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

Hallo,

danke! Jetzt läuft das Ding, so wie ich das wollte.

Hab noch eine Frage:

Wie mach ich das mit der Abfrage, ob ich nochmal das gleiche berechnen möchte oder eine andere Rechenart auswählen will?

Puma00

versteh' die Frage nich'

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

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.

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>

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.