Forum: PC-Programmierung C++ Probleme


von Pyramid (Gast)


Lesenswert?

Hi,
weiß zufällig jemand warum meine do-while schleife nicht funktioniert ?
und rechnen funktioniert auch nicht ... ich hab keine ahnung warum :-(
kann mir evtl jemand erklären warum das so ist und ggf einen 
lösungsvorschlag ?



1
#include <iostream>
2
#include <math.h>
3
using namespace std;
4
5
6
int main ()
7
{
8
  double Operant1;
9
  double Operant2;
10
  int MOp;
11
  char XX;
12
13
do
14
{
15
  cout <<"Bitte geben sie Operant 1 ein: " << endl;
16
  cin >> Operant1;
17
  cout <<"Bitte geben sie Operant 2 ein: " << endl;
18
  cin >> Operant2;
19
  cout <<" Folgende Operationen sind Möglich (+ - * / % !)" << endl;
20
  cin >> MOp;
21
22
  if (MOp == '+')
23
  {
24
    cout <<" Das Ergebnis ist: " << Operant1 + Operant2 << endl;
25
  }
26
  else if ( MOp == '-')
27
  {
28
    cout <<" Das Ergebnis ist: " << Operant1 - Operant2 << endl;
29
  }
30
  else if ( MOp == '*')
31
  {
32
    cout <<" Das Ergebnis ist: " << Operant1 * Operant2 << endl;
33
  }
34
  else if ( MOp == '/')
35
  {
36
    cout <<" Das Ergebnis ist: " << Operant1 / Operant2 << endl;
37
  }
38
  else if ( MOp == '%')
39
  {
40
    cout <<" Das Ergebnis ist: " << Operant1 * Operant2 << endl;
41
  }
42
  cout << "Erneute Rechnung? j/n" << endl;
43
  cin >> XX;
44
}while (XX == 'J' || XX == 'j');
45
46
  
47
  system ("PAUSE");
48
49
50
return 0;
51
}

von asdf (Gast)


Lesenswert?

int MOp;

von ghjk (Gast)


Lesenswert?

Wie mein Vorposter schon sagte muss es z.B. char MOp heißen, da man in 
ein int keine Zeichen sondern nur Zahlen abspeichern kann.

math.h musst du für diese einfachen Operationen übrigens auch nicht 
inkludieren.

MfG

von Peter II (Gast)


Lesenswert?

ghjk schrieb:
> Wie mein Vorposter schon sagte muss es z.B. char MOp heißen, da man in
> ein int keine Zeichen sondern nur Zahlen abspeichern kann.
ja so eng sieht es der compiler nicht - es geht.



Mach doch mal ein paar prints rein das man sieht was passiert, oder 
beschreibe mal was genau nicht geht.

von (prx) A. K. (prx)


Lesenswert?

ghjk schrieb:

> Wie mein Vorposter schon sagte muss es z.B. char MOp heißen, da man in
> ein int keine Zeichen sondern nur Zahlen abspeichern kann.

Natürlich kann man in ein "int" auch Zeichen speichern, aber "cin >> 
MOp" wird sonst eine Zahl einlesen, kein Zeichen.

von Pyramid (Gast)


Lesenswert?

Ok vielen Dank für die Hilfe


hätte da noch eine Frage...

Ist eine Modulo-Rechnung mit double überhaupt möglich? Wenn nicht kann 
ich sie ja rausnehmen (bei mir funktioniert es nicht, er beschwert sich 
wegen double... mit int funktioniert es aber das hilft mir nicht weiter)

von (prx) A. K. (prx)


Lesenswert?

Pyramid schrieb:

> Ist eine Modulo-Rechnung mit double überhaupt möglich?

Nein.

von Oberlehrer (Gast)


Lesenswert?

Und das Wort heißt "Operand" und nicht "Operant" ;-). Sorry.

Und da der OP ein Anfänger zu sein scheint, noch ein Tipp: per 
Konvention beginnt man üblicherweise Variablennamen mit Kleinbuchstaben.

Für das obige Beispiel ist das natürlich egal, aber man sollte sich 
schlechten Stil gar nicht erst angewöhnen (no-pun-intended).

von (prx) A. K. (prx)


Lesenswert?

Oberlehrer schrieb:

> Für das obige Beispiel ist das natürlich egal, aber man sollte sich
> schlechten Stil gar nicht erst angewöhnen (no-pun-intended).

Besonders da er in seiner Prosa ausschließlich klein schrieb. ;-)

von Pyramid (Gast)


Lesenswert?

Ok vielen Dank für die Tipps (auch für den OperanD Tipp^^):-)
Ich kapier zwar nicht warum dann die Modulo Rechnung in der 
Aufgabenstellung steht aber seis drum.

von (prx) A. K. (prx)


Lesenswert?

Pyramid schrieb:

> Ok vielen Dank für die Tipps (auch für den OperanD Tipp^^):-)
> Ich kapier zwar nicht warum dann die Modulo Rechnung in der
> Aufgabenstellung steht aber seis drum.

Vielleicht um es nicht ganz so trivial werden zu lassen, statt dessen 
also der Einsatz deines Denkvermögens getestet wird? Denn wiewohl C/C++ 
kein Fliesskomma-Modulo zulassen: Du selbst kannst das sehr wohl 
programmieren. Nur eben bischen drumrum.

von Karl H. (kbuchegg)


Lesenswert?

A. K. schrieb:
> Pyramid schrieb:
>
>> Ok vielen Dank für die Tipps (auch für den OperanD Tipp^^):-)
>> Ich kapier zwar nicht warum dann die Modulo Rechnung in der
>> Aufgabenstellung steht aber seis drum.
>
> Vielleicht um es nicht ganz so trivial werden zu lassen, statt dessen
> also der Einsatz deines Denkvermögens getestet wird? Denn wiewohl C/C++
> kein Fliesskomma-Modulo zulassen: Du selbst kannst das sehr wohl
> programmieren. Nur eben bischen drumrum.

Oder einfach die Funktion fmod aus math.h benutzen :-)

von (prx) A. K. (prx)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Oder einfach die Funktion fmod aus math.h benutzen :-)

Nu wollte ich ihm extra Gelegenheit geben, sein eigenes Hirn 
einzusetzen, weils doch erklärtermassen eine Hausaufgabe ist. Aber 
nein... ;-)

von Karl H. (kbuchegg)


Lesenswert?

A. K. schrieb:
> Karl Heinz Buchegger schrieb:
>
>> Oder einfach die Funktion fmod aus math.h benutzen :-)
>
> Nu wollte ich ihm extra Gelegenheit geben, sein eigenes Hirn
> einzusetzen, weils doch erklärtermassen eine Hausaufgabe ist. Aber
> nein... ;-)

LOL
Hast natürlich recht. Es schadet nichts, wenn man nach Jahren noch 
einmal überlegt, wie man eigentlich den Rest einer Division berechnet. 
In der Grundschule (2. oder 3. Klasse) konnte man das ja auch.

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.