If funktioniert nicht.
-
Hallo, ich habe gerade angefangen C++ zu lernen. Ich werde es so machen, dass ich mein Projekt immer weiter erweitern werde. Es geht um ein Programm, dass dir eine Matheaufgabe stellt und deine Antwort wird dann ausgewertet. Später will ich noch Punkte einbauen, die mittels gebrauchter Zeit und der Schwierigkeit der Aufgabe berechnet werden und wenn man ganz gut ist, sollen die Aufgaben dementsprechend schwerer werden bzw. leichter. Highscore und bla bla... kommt auch. Find ich eigentlich ganz spannend aber ich hänge gerade bei IF fest. Er sagt immer es ist richtig aber sieht es selbst:
#include <iostream.h> char zahl1; char zahl2; char entry; char points; int ergebniss(int z1,int z2, int ent) { if (ent=z1+z2) {printf("Richtige Antwort!\n");std::cin.ignore(42,'\n');} else {printf("Falsche Antwort. Sie lautet %d.\n",z1+z2);std::cin.ignore(42, '\n');}; } int main(void) { aufgabe: std::cin.ignore(42, '\n'); srand((unsigned)time(NULL)); zahl1 = rand() % 10 + 1; zahl2 = rand() % 10 + 1; printf("Was ist %d + %d?\n",zahl1,zahl2); std::cin.get(entry); ergebniss(zahl1,zahl2,entry); goto aufgabe; return 0; }Als Programm benutz ich Dev-C++ 4.9.9.2.
Bitte um Hilfe.
-
Du benutzt den Zuweisungsoperator in deinem if, nicht der Vergleichsoperator (==)
-
Noch ein paar Tipps:
- meide globale Variablen
- verwende keine C-Funktionen in deinem Code (vorerst)
- es heißt nicht#include <iostream.h>sondern#include <iostream>
- versuch nicht an Zeilen zu sparen - darunter leidet die Lesbarkeit deines Codes (damit meine ich z.B. mehrere Anweisungen in einer Zeile in deiner Funktion)
- lösche goto aus deinem Gedächtnis - das ist ein Überbleibsel welches bei größeren Programmen zum Spaghetti-Code führt. Dafür hast du verschiedene Schleifen.
- ergebniss() gibt keinen Wert zurück - entweder zu void ändern oder was zurückgeben.
- Ergebnis schreibt man im Nominativ mit einem s
-
Maxim1234 schrieb:
Hallo, ich habe gerade angefangen C++ zu lernen.
Ok. Dann tu dir einen gefallen und schnapp dir ein gescheites C++ Buch. Nicht, dass du dir noch mehr schlechte Sachen (neben iostream.h, goto, printf) irgendwo abguckst. Gescheite Bücher heißen "C++ Primer" (ohne "Plus" im Titel!), "Accelerated C++", "Der C++ Programmierer", "The C++ Programming Language", "Programming - Principles and Practice Using C++". Vermeide Bücher mit Titeln wie "von A bis Z", "in 21 Tagen" oder "Sowieso Plus".
Merke dir auch, dass
charfür ein einzelnes Zeichen da ist. Willst du mit Ganzzahlen hantieren, bietet sich erst malintan. Die iostreams machen diesen Unterschied. Das solltest du wissen. Angenommen, auf deiner Plattform kommt ASCII als excecution character set zu Einsatz, dann wird dir cin.get bei Eingabe einer 1 den Wert 49 in die Char-Variable reinschreiben und bei der Eingabe von A den Wert 65. Ich denke nicht, dass du dieses Verhalten haben willst. Ich denke eher, dass du so etwas haben willst:int x; cin >> x;Hier wird die eingegebene Zeichenkette bis zum nächsten Whitespace eingelesen, als dezimalkodierte Ganzzahl betrachtet und dementsprechend konvertiert. Der Wert dieser Zahl steht dann in der Variablen x.
Maxim1234 schrieb:
Als Programm benutz ich Dev-C++ 4.9.9.2.
Soweit ich weiß, ist das Uralt und wird nicht mehr gepflegt. Wenn du einen Editor mit Projektverwaltung haben willst, der auch auf MinGW als Compiler aufsetzen kann, kannst du auch Code::Blocks verwenden. Allerdings würde ich inzwischen Visual C++ Express für Windows empfehlen. Das gibt's auch für lau und funktioniert wenigstens mit dem Windows SDK zusammen, falls du das man benutzen willst.