Rundene einer Dezimalzahlq
-
Folgendes Programm enthält mehere switch-Anweisungen.
Unter Punkt 'r' soll eine Dezimalzahl gerundet werden.
Das Programm gibt aber nicht die gerundete Zahl aus.
Bei 3.3 kommt 3 raus bei 3.8 kommt wieder 3
raus. Das selbe gilt auch für negative Zahlen.
Könnte mir mal jemand bitte weiterhelfen.
Vielen Dank!#include <iostream> using namespace std; int main () { sprungpunkt: char befehl; cout << endl; cout << " Ausgabe des vollstaendigen Zeichensatzes < a, A> " << endl; cout << " Runden einer Dezimalzahl < r > " << endl; cout << " Umwandlung von Buchstaben (klein<->gross) < u > " << endl; cout << " Beenden des Programmes < b, x> " << endl; cout << " Ihre Eingabe : "; cin >> befehl; switch ( befehl ) { case 'a': case 'A': { cout << " Der vollständige Zeichensatz wird ausgegeben " << endl; for ( int i =-128; i<=127; i++) { putchar(i); cout << endl; } break; } case 'r': { int zahl; cout << " Runden einer Dezimalzahl " << endl; cout << " Bitte geben Sie eine Zahl ein: " << endl; cin >> zahl; if (zahl<0) zahl= zahl-0.5; else zahl=zahl+0.5; cout << int (zahl) << endl; break; } case 'u': { cout << " Umwandlung von Gross- in Kleinbuchstaben " << endl; char abc; cout << " Bitte geben Sie einen Buchstaben ein " << endl; cin >> abc; if (abc < 'A' && abc > 'a' ) { cout << " Ungültige Eingabe " << endl; } if (abc >='A' && abc <= 'Z') { abc= abc + 32; cout << abc << endl; } else if (abc >='a' && abc <= 'z') { abc= abc -32; cout << abc << endl; } break; } case 'b': case 'x': { cout << " Ende " << endl; break; } goto sprungpunkt; } return 0; }
-
zahl ist ein int, sollte wohl eher float/double sein.
-
Und noch ein paar Hinweise:
- deine Bedingung "if (abc < 'A' && abc > 'a' )" wird bei dem üblichen ASCII-Zeichensatz immer 'false' sein
- benutze zum Umwandeln besser tolower() und toupper() (aus <cctype>)
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
-
Th69 schrieb:
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
while(true)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine
for(;;)-Schleife.
-
forever schrieb:
Th69 schrieb:
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
while(true)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine
for(;;)-Schleife.for(;;)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine Schleife mit sinnvoller Abbruchbedingung.
-
Ethon schrieb:
forever schrieb:
Th69 schrieb:
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
while(true)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine
for(;;)-Schleife.for(;;)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine Schleife mit sinnvoller Abbruchbedingung.
Schleifen mit sinnvoller Abbruchbedingung sind (hier im Forum) auch nicht gern gesehen - nimm besser garkeine Schleifen.
-
Schleifenmaster schrieb:
Ethon schrieb:
forever schrieb:
Th69 schrieb:
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
while(true)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine
for(;;)-Schleife.for(;;)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine Schleife mit sinnvoller Abbruchbedingung.
Schleifen mit sinnvoller Abbruchbedingung sind (hier im Forum) auch nicht gern gesehen - nimm besser garkeine Schleifen.
Fehlerhafte Programme sind (hier im Forum) auch nicht gern gesehen - nimm besser Rekursion.
-
Recurrentmaster schrieb:
Schleifenmaster schrieb:
Ethon schrieb:
forever schrieb:
Th69 schrieb:
- goto wird (hier im Forum) auch nicht so gern gesehen - nimm besser eine while-Schleife
while(true)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine
for(;;)-Schleife.for(;;)-Schleifen sind (hier im Forum) auch nicht gern gesehen - nimm besser eine Schleife mit sinnvoller Abbruchbedingung.
Schleifen mit sinnvoller Abbruchbedingung sind (hier im Forum) auch nicht gern gesehen - nimm besser garkeine Schleifen.
Fehlerhafte Programme sind (hier im Forum) auch nicht gern gesehen - nimm besser Rekursion.
Unsinnige Beiträge sind (hier im Forum) auch nicht gerne gesehen - schreib lieber was konstruktives.
Oder anders: spätestens sein "Schleifenmaster" wurde das Spiel absurd, also bleibt bitte in der Nähe des Themas.
-
Um Zahlen auf/abzurunden gibt es zwei nützliche Funktionen:
aufrunden: floor()
abrunden: ceil()Enthalten in <cmath.h>
...
-
Golfi1812 schrieb:
Enthalten in <cmath.h>
Äh, nö. Fast richtig. <cmath>