Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Wert in C++ speichern mit Dezimalstellenerzwingung

Sovebämse / 12 Antworten / Flachansicht Nickles

Hallo

Bin Programmieranfänger und erst mal bei den Basisdingen angelangt (d.h. noch keine Arrays, Klassen usw.).

Da ich aber gerne dann selber ausprobiere und mir Ziele setze, wollte ich mal ein Programm schreiben, welches erkennt, ob man eine Integer-Zahl eingegeben hat oder nicht.

Mit "cout" kann ich ja eine Ausgabe mit einer bestimmten Dezimalstellenanzahl erzwingen. Wenn also z.B. 2 eingegeben wird, wird 2.0 oder 2.00 angezeigt.

Ein Programm habe ich bereits schreiben können, welches Werte wie 2.5 als Nicht-Integer erkennt und eine 2 als Integer. Allerdings wird eine 2.0 auch als Integer bekannt, da anscheinend intern im Speicher, eine 2.0 als 2 dargestelt wird, auch wenn 2.0 eingegeben wird.

Frage: Gibt es eine Möglichkeit mit "cin" oder auf eine andere Weise, eine eingegebene Zahl auf eine solche Null-Dezimalstelle zu prüfen oder diese genau so abzuspeichern, wie sie eingetippt wurde, also nicht als 2, sondern 2.0? Ich möchte nämlich, dass auch diese als Nicht-Integer erkannt werden.

Bitte (wenn es geht) die einfachste Lösung. Falls es keine einfache Lösung gibt, werde ich wohl zuerst noch etwas weiterlernen müssen ;-)

Danke und Gruss
Thomas

bei Antwort benachrichtigen
PaoloP Sovebämse „Hm, wie kann ich den String denn auswerten? Habe momentan folgenden Quellcode:...“
Optionen

Alo zum ersten ist mir nicht bekannt das cin für den string datentypen überladen ist.
vielleicht geht das bei dir , welchen compiler benutzt du?


Zweitens

if (string[Zahl]=='.')

Das geht garnicht. Was sollte das werden ?
Wenn Du ermitteln willst ob ein "." darin vorkommt würde ich über ein char array und strstr vorgehen.


char Zahl[128];

cout'<''<'"Geben Sie eine Integer-Zahl ein: ";
cin'>'>Zahl;

char* seperator = strstr((char*)Zahl,".");
if(NULL != seperator)
cout '<'< "Dies ist eine Integer-Zahl!";
else
cout '<'<"Die ist keine Integer-Zahl!";


Allerdings werden wenigstens 50% der Benutzer "," eingeben bzw. das Dezimaltrennzeichen ist ein vielfälftiges Ding in versch. Ländern.
Gib einen Hinweis im Progam aus beim Start das man Dezimalzahlen durch ein "." zu trennen hat wenigstens. Ausserdem musst du noch prüfen ob der Benutzer auch eine gültige Zahl eingegeben hat und nicht z.B. "abc.00ae".

See ya.


Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen