Forum: PC-Programmierung C++ Beispielprogramm Taschenrechner


von Richard L. (richard86)


Angehängte Dateien:

Lesenswert?

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 :)

von Oliver (Gast)


Lesenswert?

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

von Yalu X. (yalu) (Moderator)


Lesenswert?

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 :-/

- ...

von Markus M. (mark_m)


Lesenswert?

"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

von D. I. (Gast)


Lesenswert?

Yalu X. schrieb:
> Wenn das tut, würde ich noch etwas an der "Usability" optimieren:

Die Usability ist wahrscheinlich auf dem Hausaufgabenpapier vorgegeben.

von Richard L. (richard86)


Lesenswert?

Hmm,
kann mir das jemand zeigen wie das dann aussehen sollte?

Darin
1
printf << x << " + " << y << " = " << z <<endl;

lg :)

von Karl H. (kbuchegg)


Lesenswert?

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.

von Bastler (Gast)


Lesenswert?

> Jedoch weiß ich nicht wie man die Ausgabe des Ergebnisses macht, dass
> der Operator (+, -, *, /) auch korrekt dabei steht.
> Kennt sich hier jemand aus?
http://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_Einf%C3%BChrung_in_C%2B%2B/_Ein_Taschenrechner_wird_geboren

zu faul "C++ Taschenrechner" in die Suchmaschine einzutippen ... 
unglaublich.

von Richard L. (richard86)


Angehängte Dateien:

Lesenswert?

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?

von Silvan K. (silvan) Benutzerseite


Lesenswert?

Richard Lunz schrieb:
> Woran kann das liegen?

Stichwort: "Vorwärtsdeklaration"

von Calculus (Gast)


Lesenswert?

Warum funktioniert es den bei der "addition"?

So machst Du es auch mit den drei anderen Operationen.

von Richard L. (richard86)


Lesenswert?

Calculus schrieb:
> arum funktioniert es den bei der "addition"?

Das frage ich mich auch :)

von F. F. (foldi)


Lesenswert?

Karl Heinz Buchegger schrieb:
> printf( "%d + %d = %d\n", x, y, z );

... wobei heute doch %i genommen wird (laut meinem C-Buch)

von Karl H. (kbuchegg)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Richard L. (richard86)


Angehängte Dateien:

Lesenswert?

Hi Leute,

Funktioniert, danke :)

von Calculus (Gast)


Lesenswert?

Hab einen Fehler gefunden!!!

Eingabe:
3
4
0

-> Programm Absturz!!!

:-P

von Richard L. (richard86)


Lesenswert?

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 ;)

von Richard L. (richard86)


Angehängte Dateien:

Lesenswert?

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 :)

von Rolf M. (rmagnus)


Lesenswert?

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.

von Richard L. (richard86)


Lesenswert?

ok, und wie schaut der c-code aus wenn es funktioniert?

von Calculus (Gast)


Lesenswert?

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!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.