Taschenrechner

07/15/2012 16:30 Grapefruit97#1
Hallo, ich bin ein noch ziemlicher Anfänger in C++. Heute habe ich einen Taschenrechner programmiert( er kann nur zwei zahlen bearbeiten). :

#include <iostream>

using namespace std;
int Zahl1, Zahl2, Eingabe, Ergebnis;
char Antwort;

int main()
{

cout << "Geben sie die Art der Rechnung ein :\n [1]: Addition\n [2]: Subtraktion\n [3]: Multiplikation\n [4]: Division\n" << '\n';
if ((cin >> Eingabe) == false)
{
cerr << "FEHLER" << '\n';
}
else
{
switch (Eingabe)
{
case 1:
cout << "Sie haben Addition gewählt. Geben sie die 2 Zahlen ein die sie addieren möchten" << '\n';
if ((cin >> Zahl1) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
else
{
if ((cin >> Zahl2) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
else
{
Ergebnis = Zahl1 + Zahl2;
cout << "Dass Ergebnis beträgt : " << Ergebnis << '\n';
}
}
break;

case 2:
cout << "Sie haben Subtraktion gewählt. Geben sie die 2 Zahlen ein die sie subtrahieren möchten" << '\n';
if ((cin >> Zahl1) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
if ((cin >> Zahl2) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
else
{
Ergebnis = Zahl1 - Zahl2;
cout << "Dass Ergebnis beträgt : " << Ergebnis << '\n';
}
break;

case 3:
cout << "Sie haben Multiplikation gewählt. Geben sie die 2 Zahlen ein die sie multiplizieren möchten" << '\n';
if ((cin >> Zahl1) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
if ((cin >> Zahl2) == false)
{
cerr << "Es muss eine Zahl eingegeben werden!" << '\n';
}
else
{
Ergebnis = Zahl1 * Zahl2;
cout << "Dass Ergebnis beträgt : " << Ergebnis << '\n';
}
break;
case 4:
cout << "Sie haben Division gewählt. Geben sie die 2 Zahlen ein die sie dividieren möchten(Keine Nullen)" << '\n';
if ((cin >> Zahl1) == false || Zahl1 == 0)
{
cerr << "Fehler bei Eingabe" << '\n';
}
if ((cin >> Zahl2) == false || Zahl2 == 0)
{
cerr << "Fehler bei Eingabe" << '\n';
}
else
{
Ergebnis = Zahl1 / Zahl2;
cout << "Dass Ergebnis beträgt : " << Ergebnis << '\n';
}
break;
}cout << "Willst du jetzt nochmal was rechnen oder das Programm schließen??" << '\n';
}
return 0;
}

Ich würde mich sehr über verbesserungsvorschläge etc freuen! (PS: er ist noch nicht ganz fertig)

Danke im Voraus:handsdown:
07/15/2012 19:37 マルコ#2
Vorschlag 1) benutz die [CODE] Tags
2) Benutz functions, um den Code übersichtlicher und besser wiederverwendbar zu machen
3) Mach dann noch ne TR-Klasse, so dass es wirklich sauber wiederverwendbar ist.

Natürlich mein ich mit "wiederverwendbar", dass du es üben sollst. Weil brauchen wirst du das wahrscheinlich nicht mehr^^

Desweiteren empfehle ich, cin, so wie scanf in C, immer zu flushen.

Wie das alles geht? GOOGLE ; )
Oder frag dein Buch, das du sicherlich benutzt, um C++ zu lernen.
07/16/2012 15:21 Grapefruit97#3
Meinst du mit ner Tr klasse ein template?
07/16/2012 23:02 マルコ#4
Nein, eine Klasse.
Code:
class CCalculator
{
private:
  int num1,num2;
public:
  CCalculator();
  int multiply();
  void setNumbers(int, int);
};
07/17/2012 18:19 Hg(CNO)2#5
Warum kennt er wohl keine Klassen?
Quote:
Hallo, ich bin ein noch ziemlicher Anfänger in C++.
Verbesserungsvorschläge kann man hier nicht geben. Ein Anfänger sollte erstmal auf seiner Weise die Sprache lernen, da ist es momentan egal, welchen Programmierstil du verwendest.(Solang du schlechte Funktionen dir nicht angewöhnst.)


Over. And out. Hg(CNO)2
07/17/2012 19:28 .SkyneT.#6
Da geb ich dem Knallquecksilber über mir Recht.
OOP kann man gleich mitlernen muss man aber nicht.

Stil sollte man aber von Anfang an so gut wie möglich lernen,
sonst gewöhnt man sich noch irgend nen Schwachsinn an...
07/19/2012 17:04 Grapefruit97#7
Was muss ich denn eigl als grundlage in c++ alles wissen? was ist wichtig und was nicht unbedingt???
07/19/2012 17:31 dowhile#8
Quote:
Originally Posted by Grapefruit97 View Post
Was muss ich denn eigl als grundlage in c++ alles wissen? was ist wichtig und was nicht unbedingt???
Quote:
Originally Posted by マルコ View Post
Nein, eine Klasse.
Code:
class CCalculator
{
private:
  int num1,num2;
public:
  CCalculator();
  int multiply();
  void setNumbers(int, int);
};
Eine Klasse die ... multipliziert?!

Schreibst du statt
Code:
int frameWidth = rectWidth * rectCount
dann auch
Code:
Calculator calc();
calc.setNumbers(rectWidth, rectCount);
int frameWidth = calc.multiply();
? Und für eine Addition zweier Zahlen verwendest du dann kein "+" sondern schreibst dir die Klasse CAdder?
07/19/2012 22:38 マルコ#9
Quote:
Originally Posted by dowhile View Post
Eine Klasse die ... multipliziert?!

Schreibst du statt
Code:
int frameWidth = rectWidth * rectCount
dann auch
Code:
Calculator calc();
calc.setNumbers(rectWidth, rectCount);
int frameWidth = calc.multiply();
? Und für eine Addition zweier Zahlen verwendest du dann kein "+" sondern schreibst dir die Klasse CAdder?
Ich glaub, du verfehlst das Topic -.-
Es war ein Beispiel, wie eine Klasse aussehen kann. Vollkommen ungeachtet der Funktionen. Flame also nicht rum.


Und ja, er hat nach Verbesserungsvorschlägen gefragt. Und eine Klasse ist eine Verbesserung. Wie/wann/wo ers lernt - darüber hab ich keine Aussage getroffen. Wobei ich empfehle, gerade als Anfänger möglichst früh sich das Klassenprinzip anzueignen und zu verwenden.
07/22/2012 09:37 Grapefruit97#10
Was ist aber grundlage in C++? was muss ich beherrschen?
07/22/2012 12:35 MrSm!th#11
Quote:
Was muss ich denn eigl als grundlage in c++ alles wissen? was ist wichtig und was nicht unbedingt???
Alles ist wichtig.

Quote:
Und ja, er hat nach Verbesserungsvorschlägen gefragt. Und eine Klasse ist eine Verbesserung. Wie/wann/wo ers lernt - darüber hab ich keine Aussage getroffen. Wobei ich empfehle, gerade als Anfänger möglichst früh sich das Klassenprinzip anzueignen und zu verwenden.
OOP ist kein göttliches Sprachmittel, das immer und überall am besten passt und deshalb jedem Projekt aufgezwungen werden sollte.
07/23/2012 17:57 ehauser#12
Quote:
OOP ist kein göttliches Sprachmittel, das immer und überall am besten passt und deshalb jedem Projekt aufgezwungen werden sollte.
:D Das stimmt!