Hallo Leute,
Ich müsste in C++ ein Beipielprogramm schreiben, habe auch schon fast
alles fertig. Da ich mich aber nur in C# und C "auskenne" weiß ich in
c++ nicht weiter. Beim "printf" sollte das Ergebniss der Rechnung
ausgegeben werden.
Jedoch weiß ich nicht wie man die Ausgabe des Ergebnisses macht, dass
der Operator (+, -, *, /) auch korrekt dabei steht.
Kennt sich hier jemand aus?
Danke :)
Nun ja, dein C++ unterscheidet sich auf den ersten Blick nicht
sonderlich von normalem C. Und damit kennst du dich ja aus ;)
Printf funktioniert in C++ genauso wie in C. Was also ist jetzt deine
Frage?
Und was sagt dein Compiler zu deinem Programm? Richtig mögen wird er das
wohl nicht, nicht nur wegen der komischen Endung .txt
Oliver
Du benutzt für die Ein- und Ausgabe ja größtenteils die Stream-IO von
C++, also die Operatoren >> und <<. Das ist in Ordnung, aber die Streams
heißten nicht scanf und printf, sondern cin und cout. Ersetze also
einfach diese Namen.
Die zig Fehler, die der Compiler dann noch ausgibt, würden fast alle
auch von einem C-Compiler angeprangert. Da du ja C kannst, sollte es dir
deswegen nicht schwer fallen, diese Fehler zu beheben.
Wenn das tut, würde ich noch etwas an der "Usability" optimieren:
- Wäre es nicht schöner,
444 - 333
statt
444 333 2
eingeben zu können, um eine Subtraktion durchzuführen?
- Und was passiert bei einer Division durch Null?
- Was passiert, wenn man einen ungültigen Operator eingibt?
- Wenn man mehrere Rechnungen durchführen möchte, muss man jedesmal das
Programm neu starten :-/
- ...
"printf" und "scanf" kannst du so nicht aufrufen. Lies in deinem C Buch
nach. Wenn das Programm im C Syntax läuft, fügst Du die Stream
Funktionalität von C++ hinzu. Danach erstelle eine Klasse
"Taschenrechner", die dann die einzelnen Methoden - addition,
subtraktion, multiplikation und division - beinhaltet, die jetzt einzeln
existieren. Anschliessend überlädst Du die Operatoren +, - , *, / mit
eben dieser Funktionalität.
Die Grundlagen von C++ kannst du in einem Buch nachlesen. z.B. "Der C++
Programmierer" von Ulrich Breymann.
Grüsse
Yalu X. schrieb:> Wenn das tut, würde ich noch etwas an der "Usability" optimieren:
Die Usability ist wahrscheinlich auf dem Hausaufgabenpapier vorgegeben.
Richard Lunz schrieb:> Hmm,> kann mir das jemand zeigen wie das dann aussehen sollte?>> Darin>
1
>printf<<x<<" + "<<y<<" = "<<z<<endl;
2
>
Na ja. Eben entweder als C++ Stream Operationen
1
cout<<x<<" + "<<y<<" = "<<z<<endl;
oder eben auf die C-Tour
1
printf("%d + %d = %d\n",x,y,z);
aber du kannst nicht das eine mit dem anderen mischen. Entweder du
benutzt die Stream Operationen, dann heißt der Ausgabestream cout oder
eben mit printf und Formatstring.
Näheres findest du sicherlich in deinen Lernunterlagen.
Hi, ok,
Habe das so weit hinbekommen. Danke
Nur ist jetzt der Fehler:
>"Subtraktion" Bezeichenr wurde nicht gefunden.<
Das gleiche für multiplikation und division.
Woran kann das liegen?
F. Fo schrieb:> Karl Heinz Buchegger schrieb:>> printf( "%d + %d = %d\n", x, y, z );>> ... wobei heute doch %i genommen wird (laut meinem C-Buch)
für printf sind %d und %i gleich.
Richard Lunz schrieb:> Calculus schrieb:>> arum funktioniert es den bei der "addition"?>> Das frage ich mich auch :)
Dann benutze mal in deinem Editor die Funktion 'Finden' und schau dir
mal an, wo überall der Text "addition" vorkommt. Spätestens dann müsste
es eigentlich klingeln, worin der Unterschied zwischen "addition" und
"subtraktion" besteht.
Calculus schrieb:> -> Programm Absturz
Kein Absturtz, die Konsole schließt sich einfach wieder sofort nach
Abschluss der Ausgabe.
Habe am Schluss noch einmal
while(1)
{
}
angehängt, ist zwar nicht elegant aber es funktioniert ;)
So, jetzt hab ichs anstatt mit cin und cout, mit printf und scanf
probiert, aber es kommt nur Müll raus.
Laut Internet solls so aussehen, als bsp:
scanf (“%d“, &i); //scanf wartet auf Zahl
läuft aber nicht... Fragezeichen :)
Richard Lunz schrieb:> Calculus schrieb:>> -> Programm Absturz>> Kein Absturtz
Doch.
Richard Lunz schrieb:> So, jetzt hab ichs anstatt mit cin und cout, mit printf und scanf> probiert, aber es kommt nur Müll raus.
Bei mir läuft das so gar nicht erst durch den Compiler. Nachdem ich das
hier
1
ConsoleApplication2.cpp:4:20: Schwerwiegender Fehler: stdafx.h: Datei oder Verzeichnis nicht gefunden
behoben hab, kommt:
1
ConsoleApplication2.cpp:17:11: Fehler: »::main« muss »int« zurückgeben
2
ConsoleApplication2.cpp: In Funktion »void eingabe(int&, int&, int&)«:
3
ConsoleApplication2.cpp:51:31: Fehler: »scanf« wurde in diesem Gültigkeitsbereich nicht definiert
4
ConsoleApplication2.cpp: In Funktion »void ausgabe(int, int, int, int)«:
5
ConsoleApplication2.cpp:76:39: Fehler: »printf« wurde in diesem Gültigkeitsbereich nicht definiert
6
ConsoleApplication2.cpp: In Funktion »void begruessung()«:
7
ConsoleApplication2.cpp:81:41: Fehler: »printf« wurde in diesem Gültigkeitsbereich nicht definiert
und wenn ich das auch noch behebe, funktioniert es.
Da ist die berühmt berüchtigte "Division durch Null"! Diese Grundlage
lernt man im Mathematikunterricht.
Einfach eine "if" Abfrage in die divisons Funktion einbauen und wenn der
zweite Operand "0" ist eine Meldung ausgeben, dass eine Fehleingabe
vorliegt.
Grundregel: Bei einer Division immer den Divisor auf != 0 prüfen. Sonst
stürzt ein Programm unter allen Umständen ab!!!