probleme mit einer do-while schleife
-
die Fehlermeldung bei dem
while (jn=='1')
-
Crysis_02 schrieb:
die Fehlermeldung bei dem
while (jn=='1')
Das dürfte überhaupt nicht funktionieren, da es das jn in dem Kontext überhaupt nicht gibt (und wenn es das gäbe, dann wäre ein Vergleich von long double und char ziemlich ungewöhnlich. Du solltest wirklich mal die Grundlagen gründlicher lernen anstatt an locales zu denken. Bei dir fehlt da noch viel.
Die Fehlermeldung deutet darauf hin, dass der Quellcode so nicht vollständig ist und es von irgendwoher noch ein globales Symbol Namens jn gibt.
-
Ok, jn und long double kann ich weglassen
Wenn du aber für jn schon mit Zeichen vergleichst, kannst du auch gleich die Zeichen 'j' bzw 'n' nehmen.
Andererseits kannst du jn auch als int definieren.
Dann usst du den Vergleich aber mit dem Wert 1 und nicht mit dem Zeichen '1' machen
-
gut lassen wir das mal mit den locales weg.
Geht es denn nicht den Wert in do-Sektor festzulegen und dann bei while überprüefn zu lassen? Ich habe mal die Bezeichnung is janein geändert und jetzt bekomme ich halt den Fehler "`janein' undeclared (first use this function)"
//Anfang und Hauptprogramm cout<<"M"<<(char)148<<"chten sie wieder von vorne anfangen? (1=ja)"; long double janein; cin>>janein; cout<<endl<<endl<<endl<<endl; } while (janein=='1'); cout<<"Das Programm wird nun geschlossen."; system("PAUSE"); return 0; }
Oder wie kann mal sonst eine Schleife einbinden, dass das Programm wieder von vorne anfangen lässt?
Bitte mit Beispiel
-
Du musst die Variable vor do definieren. Stichwort Gültigkeitsbereich.
Achja: du definierst eine long double, initialisierst sie nicht und überprüfst aber dann auf =='1'? Lass dir das nochmal durch den Kopf gehen
gruß
syntax
-
So da ich jetzt endlich das Stichwort Gültigkeitsbereich bekomme habe geht es auch.
Jedoch möchte ich gerne trotzdem wissen, wie man Komma benutzen kann (locale) oder wie man Komma nach der Eingabe in Punkte umwandelt und dann so die Zahlen die Kommas benutzen kann.
-
Crysis_02 schrieb:
... oder wie man Komma nach der Eingabe in Punkte umwandelt und dann so die Zahlen die Kommas benutzen kann.
Als String einlesen (dazu brauchst du auch den richigen Variablentyp), Komma ersetzen (Stringfunktionen), und in Zahl wandeln.
Das kannst du alles in einer Funktion machen, die du dann mehrmals aufrufst.
-
[quote="DirkB"]
.
-
[quote="Sone"]
DirkB schrieb:
.
Glück gehabt. Ich habe den Originaltext gerade noch gelesen.
-
DirkB schrieb:
Crysis_02 schrieb:
... oder wie man Komma nach der Eingabe in Punkte umwandelt und dann so die Zahlen die Kommas benutzen kann.
Als String einlesen (dazu brauchst du auch den richigen Variablentyp), Komma ersetzen (Stringfunktionen), und in Zahl wandeln.
Das kannst du alles in einer Funktion machen, die du dann mehrmals aufrufst.
geht das mit dem strchr Befehl?
-
Crysis_02 schrieb:
DirkB schrieb:
Crysis_02 schrieb:
... oder wie man Komma nach der Eingabe in Punkte umwandelt und dann so die Zahlen die Kommas benutzen kann.
Als String einlesen (dazu brauchst du auch den richigen Variablentyp), Komma ersetzen (Stringfunktionen), und in Zahl wandeln.
Das kannst du alles in einer Funktion machen, die du dann mehrmals aufrufst.
geht das mit dem strchr Befehl?
Er meint, mit der
string
-Klasse aus der Standard-Bibliothek.
-
long double janein;
Also ist janein, oder jn oder wie auch immer es nennen willst, eine Fließkommazahl.
janein=='1'
'1' hingegen ist eine Char-Konstante, also faktisch ein "Buchstabe"/Zeichen (engl. character). Nun kannst du eine Fließkommazahl nicht mit einem Zeichen vergleichen, weil es einfach syntaktisch falsch ist. Es müsste heißen:
entweder...
long double janein; /*bli bla blub*/ while(janein==1);
oder...
char janein; /*bli bla blub*/ while(janein=='1');
Dann wäre es syntaktisch korrekt, zumindest dieser Abschnitt!
Als String einlesen (dazu brauchst du auch den richigen Variablentyp), Komma ersetzen (Stringfunktionen), und in Zahl wandeln.
Guck dir dazu am besten das entsprechende Kapitel in deinem Buch (oder womit du auch immer lernen magst) an oder google im Internet nach der Klasse string und deren Funktionen...
-
Ja das mit dem do while hab ich schon.
Ja ich hab kein buch etc. Ich hab nur google.
da werde ich was suchen.
-
Crysis_02 schrieb:
Ja ich hab kein buch etc. Ich hab nur google.
da werde ich was suchen.
Ich hoffe du suchst ein Buch.
Ohne Buch (gedruckt) wird das nichts mit lernen.
-
Die "bücher" hab ich.
-
DirkB schrieb:
Crysis_02 schrieb:
Ja ich hab kein buch etc. Ich hab nur google.
da werde ich was suchen.
Ich hoffe du suchst ein Buch.
Ohne Buch (gedruckt) wird das nichts mit lernen.Dem würde wohl auch zustimmen!
Ich bin noch selber relativer Anfänger (habe zwar schon Erfahrungen in mehreren IDEs und mit der Programmierung von GUIs etc., aber habe erst vor einem halben Jahr angefangen...) und kann dir selber aus eigener Erfahrung berichten, dass es das tödlichste überhaupt ist im Internet ohne Vorkenntnisse nach einer geeigneten Erklärung zu suchen. Entweder du findest etwas was weit über das hinaus geht, was du auch nur im Ansatz verstehen könntest, oder du findest irgendwelchen absoluten Blödsinn, der voller Fehler ist. Die Wahrscheinlichkeit etwas brauchbares als Anfänger im I-net zu finden ist reichlich gering!
Ich würde dir empfehlen, dass du dir ein ordentliches Buch holst (z.B."Einstieg in C++" von Arnold Willemer, von den mir bekannten Büchern auf jeden Fall eines der gelungensten) und das dann durcharbeitest...
-
R.Paul W. schrieb:
(z.B."Einstieg in C++" von Arnold Willemer, von den mir bekannten Büchern auf jeden Fall eines der gelungensten
Doch nicht etwa das hier, oder?
http://www.willemer.de/informatik/cpp/index.htm
Das ist ungefaehr so schlecht, wie die Buecher von Wolf.Kein L-Value
Ein Array gehört zu den wenigen Variablenkonstrukten, die vom Standard nicht als L-Value akzeptiert werden. Sie dürfen also nicht auf der linken Seite einer Zuweisung stehen. [2]
-
//Anfang und Hauptprogramm cout<<"M"<<(char)148<<"chten sie wieder von vorne anfangen? (1=ja)";
Warum nicht gleich alle Zeichen via ASCII-Code ?
-
nurf schrieb:
//Anfang und Hauptprogramm cout<<"M"<<(char)148<<"chten sie wieder von vorne anfangen? (1=ja)";
Warum nicht gleich alle Zeichen via ASCII-Code ?
sehr witzig. Es sieht einfach scheisse aus wenn ich im Programm da so nen Block habe, der weiss umrandet ist. Da finde ich das so schon schöner.
-
Doch nicht etwa das hier, oder?
http://www.willemer.de/informatik/cpp/index.htm
Das ist ungefaehr so schlecht, wie die Buecher von Wolf.Doch, doch genau das meine ich. Ich finde es didaktisch sehr gut gelungen, weil er die Syntax recht Anfänger-kompatibel
beschreibt, lediglich zum Ende hin lässt er etwas nach!
Kein L-Value
Ein Array gehört zu den wenigen Variablenkonstrukten, die vom Standard nicht als L-Value akzeptiert werden. Sie dürfen also nicht auf der linken Seite einer Zuweisung stehen. [2]Stimmt doch auch, oder etwa nicht? Ich meine:
int a[9]; a = 5;
Das ist syntaktisch nicht richtig; das meint er damit auch, glaube ich.
Klar kann man sowas schreiben:int a[9]; a[5] = 5;
Aber da weist du ja nicht dem ganzem Array einen Wert zu, sondern nur einem "Feld". Das ist nicht das selbe wie bei einem normalen int, wo a auch links stehen könnte.
Und selbst, wenn ich mich jetzt da irre und ich es falsch verstanden, bzw. es falsch im Buch steht, heißt es noch lange nicht, dass es schlecht ist. Fehler können jedem unterlaufen...