Kleine frage zu C++

05/11/2006 17:33 leg0las#1
bin gerade dabei c++ zu lernen und hab mir schon einige tuts durchgelesen aber ich weiss immernoch nicht wie man eine tastenabfrage macht^^

z.b.: cout << " willst du weitermachen? (j/n): ";

wenn man "j" eingibt soll er wieder zum anfang also mit goto start; oder so
und wenn man "n" eingibt soll er zum ende gehen, z.b. goto ende;
05/11/2006 18:00 Leonino#2
cin >> <Variable>;

so geht ein eingabe aufforderung wenn ich mich nicht irre

dann einfach ne if-Abfrage und fedig
05/11/2006 18:06 leg0las#3
um verständnisfragen zu klären hier mein toller code^^

Quote:
#include <iostream>
using namespace std;
int main()
{
int Zahl;
int abbruch;
float Eins = 1;
float Zwei = 2;
float Zehn = 10;
cout << "Enter druecken zum Start";

Start:
getchar();
cout << " Gib eine Zahl zw. 1 und 10 an: ";
Wiederholung:
cin >> Zahl;
if (Zahl >=Eins)
{
if (Zahl <= 10)
cout << " Die Zahl ist "<<Zahl<<". Tolle Zahl!";
}
getchar();
if (Zahl < Eins)
{
cout << " Zu kleine Zahl..!";
cout << "Bitte erneut eingeben ";
goto Wiederholung;
};
if (Zahl > 10)
{
cout << "Zu hohe Zahl..!";
cout << "Bitte erneut eingeben ";
goto Wiederholung;
};

cout << " Willst du nochmal? (1 - JA / 2 - NEIN ) ";
Check:
cin >> abbruch;
switch(abbruch)
{case 1:
goto Start;
break;
case 2:
return 0;
break;

};
if (abbruch > Zwei)
{
cout << " Entweder 1 fuer JA, oder 2 fuer NEIN eingeben: ";

goto Check;
};
}




und da will ich jetzt wie oben beschrieben bei j weitermachen oder n aufhören anstatt 1 für ja und 2 für nein
05/11/2006 19:33 Concer#4
naja ich weiß nich obs funktioniert, aber wenn du buchstaben statt zahlen haben willst, brauchst du auf jeden fall als variablentyp "char"!

char jn // steht für ja/nein
...
...
cout << "nochmal? j/n" << endl;
cin >> jn;
if (jn == j)
{
goto Start;
}
else
{
cout >> "kk ~~" << endl;
}


irgendwie sowas denke ich mal. is lange her seitdem ich mich mal (ein wenig) mit c++ befasst hab ~_~ kann auch ganz falsch sein
05/11/2006 20:01 Leonino#5
Quote:
Originally posted by leg0las@May 11 2006, 18:06
um verständnisfragen zu klären hier mein toller code^^

Quote:
#include <iostream>
using namespace std;
int main()
{
* * int Zahl;
* * int abbruch;
* * float Eins = 1;
* * float Zwei = 2;
* * float Zehn = 10;
* * cout << "Enter druecken zum Start";
* *
* * Start:
* * getchar();
* * * * * cout << " Gib eine Zahl zw. 1 und 10 an:* * ";
* * * * * Wiederholung:
* * * * * cin >> Zahl;
* * * * * if (Zahl >=Eins)
* * * * * {
* * * * * * * * * if (Zahl <= 10)
* * * * * * * * * cout << " Die Zahl ist "<<Zahl<<". Tolle Zahl!";
* * * * * * * * * }
* * * * * * * * * getchar();
* * * * * * * * * if (Zahl < Eins)
* * * * * * * * * {
* * * * * * * * * * * * * * cout << " Zu kleine Zahl..!";
* * * * * * * * * * * * * * cout << "Bitte erneut eingeben ";
* * * * * * * * * * * * * * goto Wiederholung;
* * * * * * * * * * * * * * };
* * * * * * * * * * * * * * if (Zahl > 10)
* * * * * * * * * * * * * * {
* * * * * * * * * * * * * * * * * * cout << "Zu hohe Zahl..!";
* * * * * * * * * * * * * * * * * * cout << "Bitte erneut eingeben ";
* * * * * * * * * * * * * * * * * * goto Wiederholung;
* * * * * * * * * * * * * * * * * * };
* * * * * * * * * * * * * * * * * *
* * * * * cout << " Willst du nochmal? (1 - JA / 2 - NEIN ) ";
* * * * * Check:
* * * * * cin >> abbruch;
* * * * * switch(abbruch)
* * * * * {case 1:
* * * * * * * * goto Start;
* * * * * * * * break;
* * * * * * * * case 2:
* * * * * * * * * * return 0;
* * * * * * * * * * break;
* * * * * * *
* * * * * * * * * * };
* * * * * * * * * * if (abbruch > Zwei)
* * * * * * * * * * {
* * * * * * * * * * * * * cout << " Entweder 1 fuer JA, oder 2 fuer NEIN eingeben:* ";

* * * * * * * * * * * * * * * * goto Check;* * * * * * * * *
* * * * * * * * * };
* * * * * * * * * }




und da will ich jetzt wie oben beschrieben bei j weitermachen oder n aufhören anstatt 1 für ja und 2 für nein
hatte deine frage wohl missverstanden o.o :D
05/11/2006 20:03 leg0las#6
hmmm also mit deiner version gings nich ganz aber hab mal n bisschen probiert und jetzt siehts so aus..

Quote:
#include <iostream>
using namespace std;
int main()
{
char j;
char n;
int Zahl;
int abbruch;


...

cout << " Willst du nochmal? (J/N) ";
cin >> abbruch;
if (abbruch = j)
{
goto Start;
};
if (abbruch = n)
{
return 0;
};
}

jetzt hab ich dass problem, das er trotzdem schließt obwohl ich j eingebe
05/11/2006 22:10 Concer#7
zuerst einmal muss afaik statt:
abbruch = j
abbruch == j stehen.
nur 1 gleichheitszeichen bedeutet deklinieren ;)
dann in der if schleife unbedingt abbruch wieder gleich 0 setzen!
allerdings geht er dann bei ja auch immer wieder aus ^^
ich wette das is alles viel zu kompliziert ~_~ die coder hier lachen uns bestimmt aus xD

? dann stell ich meinen tollen code auch ma rein >.< hab nen taschenrechner gemacht. ich brauch auch die lösung wie man wieder an den Anfang des Programms kommt. (mit j/n)


JA, ich weiß, ein taschenrechner für binom. formeln is sinnlos ~~ aber ich wollte soviel wie möglich reintun zum üben
Quote:

#include <iostream>
using namespace std;
float zahl1;
float zahl2;
float ergebnis;
int auswahl;
int abbruch;
char j;
char n;
main()
{
* * * Start:
* * * cout << "~~~~~~~~~~~Taschenrechner~~~~~~~~~~~~" << endl;
* * * cout << "Wollen sie &#092;"plus&#092;"(1) oder &#092;"minus&#092;"(2) oder" &#092;
* * * "&#092;"mal&#092;"(3) oder &#092;"geteilt&#092;"(4) oder &#092;"hoch&#092;"(5) oder &#092;"binom. formel&#092;"(6) rechnen?" << endl;
* * * cin >> auswahl;
* * * if (auswahl == 1)
* * * {
* * * cout << "sie wollen also plus rechnen. geben sie die erste zahl ein" << endl;* * *
* * * cin >> zahl1;
* * * cout << "jetzt die zweite" << endl;
* * * cin >> zahl2;
* * * ergebnis = zahl1 + zahl2;
* * * cout << zahl1 << " + " << zahl2 << " = " << ergebnis << endl;
* * * * * * cout << " nochmal rechnen? " << endl;
* * * * * * cin >> abbruch;
* * * * * * * * if (abbruch == j)
* * * * * * * * {
* * * * * * * * * * * * * * abbruch = 1;
* * * * * * * * * * * * * * goto Start;
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * }
* * * * * * * * else if (abbruch == n)
* * * * * * * * {
* * * * * * * * * * abbruch = 1;
* * * * * * * * * * return 0;
* * * * * * * * * *
* * * * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * cout << "~.~" << endl;
* * * * * * * * * * };
* *
* * * }

* * * else if (auswahl == 2)
* * * {
* * * cout << "sie wollen also minus rechnen. geben sie die erste zahl ein" << endl;* * *
* * * cin >> zahl1;
* * * cout << "jetzt die zweite" << endl;
* * * cin >> zahl2;
* * * ergebnis = zahl1 - zahl2;
* * * cout << zahl1 << " - " << zahl2 << " = " << ergebnis << endl;
* * * }
* * * else if (auswahl == 3)
* * * {
* * * cout << "sie wollen also mal rechnen. geben sie die erste zahl ein" << endl;* * *
* * * cin >> zahl1;
* * * cout << "jetzt die zweite" << endl;
* * * cin >> zahl2;
* * * ergebnis = zahl1 * zahl2;
* * * cout << zahl1 << " * " << zahl2 << " = " << ergebnis << endl;
* * * }
* * * else if (auswahl == 4)
* * * {
* * * cout << "sie wollen also geteilt rechnen. geben sie die erste zahl ein" << endl;* * *
* * * cin >> zahl1;
* * * cout << "jetzt die zweite" << endl;
* * * cin >> zahl2;
* * * ergebnis = zahl1 / zahl2;
* * * cout << zahl1 << " / " << zahl2 << " = " << ergebnis << endl;
* * * }
* * * else if (auswahl == 5)
* * * {cout << "sie wollen also hoch rechnen. geben sie die erste zahl ein" << endl;* * *
* * * cin >> zahl1;
* * * cout << "jetzt die, mit der sie die zahl 1 hochnehmen wollen" << endl;
* * * cin >> zahl2;
* * * ergebnis = zahl1;
* * * for (float schleife1 = 1; schleife1 != zahl2; schleife1++ )
* * * {
* * * * * * ergebnis = ergebnis * zahl1;
* * * * * *
* * * }
* * * cout << zahl1 << " ^ " << zahl2 << " = " << ergebnis << endl;
* * * }
* * * else if (auswahl == 6)
* * * {
* * * int auswahl_binom;
* * * float a;
* * * float b;
* * * cout << "welche binom. formel wollen sie rechen? 1, 2, 3?" << endl;
* * * cin >> auswahl_binom;
* * * * * if (auswahl_binom == 1)
* * * * * {
* * * * * cout << "a?" << endl;
* * * * * cin >> a;
* * * * * cout << "b?" << endl;
* * * * * cin >> b;
* * * * * ergebnis = (a*a) + 2*(a*b) + (b*b);
* * * * * cout << "binom. formel 1, mit a " << a << " b " << b << " = " << ergebnis<< endl;
* * * * * }
* * * * * else if (auswahl_binom == 2)
* * * * * {
* * * * * cout << "a?" << endl;
* * * * * cin >> a;
* * * * * cout << "b?" << endl;
* * * * * cin >> b;
* * * * * ergebnis = (a*a) - 2*(a*b) + (b*b);
* * * * * cout << "binom. formel 2, mit a " << a << " b " << b << " = " << ergebnis<< endl;
* * * * * }
* * * * * else if (auswahl_binom == 3)
* * * * * {{
* * * * * cout << "a?" << endl;
* * * * * cin >> a;
* * * * * cout << "b?" << endl;
* * * * * cin >> b;
* * * * * ergebnis = (a*a)-(b*b);
* * * * * cout << "binom. formel 3, mit a " << a << " b " << b << " = " << ergebnis<< endl;
* * * * * }
* * * }
* * * * *
}* *
};
05/11/2006 22:24 Concer#8
sry für doppelpost, aber ich hab (halbwegs) die lösung!
der erkennt das j bzw n nicht, wenn du mal start -> ausführen -> cmd machst und da das proggi ausführst siehst du, das er immer das nimmt, was bei "else" steht. ~~
05/11/2006 22:45 leg0las#9
ich benutz doch garkein else O_o ich hab mir bis jetzt gedacht dass man irgendwie für j einen zahlenwert nimmt und dass wenn man dann j eingibt, er halt den zahlenwert 1 ausgibt und dass dann für ja steht, irgendwie so^^

edit:
vielleicht muesste man fuer den test einfach nach dem main

Quote:

..

int main()
{
...
}

char MainZwei()
{
[hier die abfrage]
if j
goto anfang
}
bin gerade in der schule und kanns nich testen
05/12/2006 16:36 Concer#10
trotzdem, bei der ja/nein abfrage erkennt er das j nich an..deswegen schliesst das proggi sich. aber keine ahnung wie man das löst
05/13/2006 12:42 eRaZeR`#11
Mir wurde immer eingetrichtert, dass man Schleifen den Labels vorziehen soll.
Labels sollen nur in wirklichen Ausnahmen benutzt werden!

Bis jetzt habe ich alles mit Schleifen hinbekommen und noch nie ein Label benutzt. Ist auch übersichtlicher mit Schleifen.


Könnt ihr mir erklären warum ihr Labels benutzt? Habe das noch nie so richtig gesehen ^^
05/13/2006 13:25 leg0las#12
wenn du mir erst erklärst was ein label sein soll kann ich es dir vielleicht sagen :err:
05/13/2006 14:51 Concer#13
eigentlich hat erazer recht :p man soll die goto etc nicht benutzen (das wars doch oder? oô) dadurch wirds unübersichtlich. aber in diesem thread gings nunmal darum
05/13/2006 15:21 eRaZeR`#14
ja ich meinte die sprungbefehle (goto) zu den Labels.

Ich wollte damit ausdrücken, dass er wenn er grad am Anfang von C++ steht es direkt richtig lernen soll :)
05/13/2006 15:35 Concer#15
nich nur er steht am anfang von c++... ._. hättest du denn nen vorschlag wie man das mit ner schleife hinbekommen würde?