You are not logged in.

  • Login

21

Monday, June 27th 2011, 11:10am

achsoooo
d.H so hoch wie die zahl ist, so oft fragt er dann nach?
"bitte geben sie die zahl ein"
1+2
"bitte geben sie die zahl ein"
1+3
"bitte geben sie die zahl ein"
12+1
"bitte geben sie die zahl ein"
12+1
"bitte geben sie die zahl ein"
6+6

schluß?

d.H z.B nachdem 5 mal würde er nicht erneut fragen?

Edit:
JETZT habe ich es verstanden..danke :)

This post has been edited 1 times, last edit by "Pl0x" (Jun 27th 2011, 11:18am)


22

Monday, June 27th 2011, 11:53am

Weshalb sich eine do-while Schleife anbieten würde. ;D

MfG
Check

23

Tuesday, November 1st 2011, 2:05pm

Das simpelste was man ohne Funktionen machen kann:

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream> //iostream einbinden
#include <Windows.h> //Windows.h einbinden
 
using namespace std;
 
int main() //Hauptthread
{
	int auswahl=0; //Auswahl
	float zahl1=0.f; //zahl1 einer Aufgabe            /* Ob 0.f oder
	float zahl2=0.0f; //zahl2 einer Aufgabe               0.0f ist egal */
	bool schleife=true; //Schleife noch am laufen oder nicht?
 
	while(schleife) //Schleife
	{
		system("cls"); //Bildschirm leeren
		cout << "     Rechner" << endl;
		cout << "1 - Addition" << endl;
		cout << "2 - Subtraktion" << endl;
		cout << "3 - Multiplikation" << endl;
		cout << "4 - Division" << endl;
		cout << "5 - Beenden" << endl;
		cout << "Auswahl: ";
		cin >> auswahl; //Auswahl eingeben
		switch(auswahl) //Fokus auf Auswahl
		{
		case(1): //Wenn Auswahl == 1 dann
			{
				cout << endl << "Summand 1: ";
				cin >> zahl1; //Summand 1 eingeben
				cout << endl << "Summand 2: ";
				cin >> zahl2; //Summand 2 eingeben
				cout << endl << "Aufgabe: " << zahl1 << "+" << zahl2 << "=" << (zahl1+zahl2) << endl; // Aufgabe und dann Ergebnis ausgeben
				zahl1=0; //Beide Zahlen
				zahl2=0; //zuruecksetzen
				Sleep(1500); //Pausieren fuer 1,5sek
			}break;
		case(2): //Wenn Auswahl == 2 dann
			{
				cout << endl << "Minuend: ";
				cin >> zahl1; //Minuend eingeben
				cout << endl << "Subtrahend: ";
				cin >> zahl2; //Subtrahend eingeben
				cout << endl << "Aufgabe: " << zahl1 << "-" << zahl2 << "=" << (zahl1-zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
				zahl1=0; //Beide Zahlen
				zahl2=0; //zuruecksetzen
				Sleep(1500); //Pausieren fuer 1,5sek
			}break;
		case(3): //Wenn Auswahl == 3 dann
			{
				cout << endl << "Faktor 1: ";
				cin >> zahl1; //Faktor 1 eingeben
				cout << endl << "Faktor 2: ";
				cin >> zahl2; //Faktor 2 eingeben
				cout << endl << "Aufgabe: " << zahl1 << "*" << zahl2 << "=" << (zahl1*zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
				zahl1=0; //Beide Zahlen
				zahl2=0; //zuruecksetzen
				Sleep(1500); //Programm fuer 1,5sek einfrieren
			}break;
		case(4): //Wenn Auswahl == 5 dann
			{
				cout << endl << "Dividend: ";
				cin >> zahl1; //Dividend eingeben
				cout << endl << "Divisor: ";
				cin >> zahl2; //Divisor eingeben
				cout << endl << "Aufgabe: " << zahl1 << ":" << zahl2 << "=" << (zahl1/zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
				zahl1=0; //Beide Zahlen
				zahl2=0; //zuruecksetzen
				Sleep(1500); //Pausieren fuer 1,5sek
			}break;
		case(5): //Wenn Auswahl == 5 dann
			{
				schleife=false; //Aus Schleife raus gehen
			}break;
		default: //Wenn Auswahl == Irgendwas Anderes dann
			{
				cout << "FALSCHE EINGABE" << endl; //Fehlermeldung
			}
		}
	}
 
	return (0); //0 als Rueckgabewert senden um Programm zu schließen
}




Wie könnte man das Problem bei diesem Code lösen, dass wenn man beispielsweise bei der Menüauswahl anstatt Zahlen, Buchstaben eingibt -> Programm stürzt ab?

Genau gleich ist es dann bei den Cases. Wenn man dort anstatt ne Zahl nen Buchstaben eingibt, schmiert das Progi ab?

Hat mir bitte jemand ein Tip, wie er dies lösen würde.

Danke und Gruss

Wuzz

24

Tuesday, November 1st 2011, 3:38pm

du kannst deine Eingabe als String initialisieren und dann zum Integer casten.

C/C++ Quellcode

1
2
char[] auswahl; //Auswahl
cin >> (int)auswahl; //Auswahl eingeben

25

Tuesday, November 1st 2011, 3:43pm

Und wie mache ich es bei den casts, da is ja dann float?

26

Tuesday, November 1st 2011, 4:05pm

Und wie mache ich es bei den casts, da is ja dann float?

?(
Welche casts und warum float ? Schreib mal bitte in ganzen Sätzen so, dass man deine Fragen verstehen und nachvollziehen kann.

27

Tuesday, November 1st 2011, 4:14pm

Bitte entschuldige meine ungenaue Beschreibung. Also bei der Menüauswahl habe ich das nun so gelöst:

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream> //iostream einbinden
 
using namespace std;
 
int main() //Hauptteil
{
	char eingabe[1024]; //Definition für Char(im Menü)
	int auswahl; //Definition für Integer
	double zahl1; //erste Zahl der Aufgabe           
	double zahl2; //zweite Zahl der Aufgabe
	bool schleife=true; //läuft die Schleife noch oder nicht mehr?
 
	while(schleife) //Schleife
	{
		cout << "------------Rechner-----------\n" << endl; //Titel "Rechner"
		cout << "Bitte Auswahl eingeben: 1-5!\n" << endl; //Benutzer wird aufgefordert seine Auswahl zu treffen
		cout << "------------------------------" << endl; //optische Abgrenzung
		cout << "1 - Addition" << endl; //Menüauswahl 1
		cout << "2 - Subtraktion" << endl; //Menüauswahl 2
		cout << "3 - Multiplikation" << endl; //Menüauswahl 3
		cout << "4 - Division" << endl; //Menüauswahl 4
		cout << "5 - Beenden" << endl; //Menüauswahl 5
		cout << "------------------------------\n" << endl; //optische Abgrenzung
		cout << "Auswahl: "; //Bestätigung der Auswahl
		cin >> eingabe; //Auswahl eingeben
		auswahl = atoi(eingabe); //Umwandlung von Char zu Int
		switch(auswahl) //Bestimmung der Auswahl (case 1-5)
		{
		case(1): //Wenn Auswahl == 1 dann
			{
				cout << endl << "Summand 1: ";
				cin >> zahl1; //Summand 1 eingeben				
				cout << endl << "Summand 2: ";
				cin >> zahl2; //Summand 2 eingeben				
				cout << endl << "Resultat: \n" << zahl1 << "+" << zahl2 << "=" << (zahl1+zahl2) << endl; // Aufgabe und dann Ergebnis ausgeben
			}break;
		case(2): //Wenn Auswahl == 2 dann
			{
				cout << endl << "Minuend: ";
				cin >> zahl1; //Minuend eingeben
				cout << endl << "Subtrahend: ";
				cin >> zahl2; //Subtrahend eingeben
				cout << endl << "Resultat: \n" << zahl1 << "-" << zahl2 << "=" << (zahl1-zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
			}break;
		case(3): //Wenn Auswahl == 3 dann
			{
				cout << endl << "Faktor 1: ";
				cin >> zahl1; //Faktor 1 eingeben
				cout << endl << "Faktor 2: ";
				cin >> zahl2; //Faktor 2 eingeben
				cout << endl << "Resultat: \n" << zahl1 << "*" << zahl2 << "=" << (zahl1*zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
			}break;
		case(4): //Wenn Auswahl == 4 dann
			{
				cout << endl << "Dividend: ";
				cin >> zahl1; //Dividend eingeben
				cout << endl << "Divisor: ";
				cin >> zahl2; //Divisor eingeben
					if (zahl2 == 0) // Fehler, falls durch 0 dividiert wird!
					{
					cout << "Division durch 0 ist nicht erlaubt!\n" << endl; // Benutzer wird darauf hingewiesen, dass er nicht durch Null dividieren kann
					}
					else
					{
				cout << endl << "Resultat: \n" << zahl1 << ":" << zahl2 << "=" << (zahl1/zahl2) << endl; //Aufgabe ausgeben und dann das Ergebnis
					}
			}break;
		case(5): //Wenn Auswahl == 5 dann
			{
				schleife=false; //Aus Schleife raus gehen
			}break;
		default: //Wenn Auswahl == Irgendwas Anderes dann
			{
				cout << "Eingabe NICHT korrekt!" << endl; //Fehlermeldung	
			}
		}
	}
 
	return (0); //0 als Rueckgabewert senden um Programm zu schließen
}



Wenn nun jemand auf die Idee kommt, bei der Menüauswahl irgend etwas anderes als die gewünschten Menüpunkte, auszuwählen, dann erhält der Anwender eine Fehlermeldung und auch das Programm stürzt nicht mehr ab.

Wie mache ich dies aber nun, damit bei den Cases 1-5 auch ein Fehler an den Anwender ausgegeben wird, wenn er beispielsweise nen char eingibt(momentan stürzt das Programm einfach ab)?

Danke und Gruss

28

Tuesday, November 1st 2011, 4:30pm

Wie mache ich dies aber nun, damit bei den Cases 1-5 auch ein Fehler an den Anwender ausgegeben wird, wenn er beispielsweise nen char eingibt(momentan stürzt das Programm einfach ab)?


Entweder löst du dies, wie bei der auswahl, durch Typecasting, oder mit Exceptions.

Social bookmarks