PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rückgabewert funktioniert irgendwie nicht.



jookerxxx
25.12.2008, 22:53
#include <iostream>
#include <conio.h>
using namespace std;

int main(){

float wert;

cout<<"Bitte eine Fließkommazahl eingeben:"<< endl;
cin>>wert;

if( ! (cin>>wert) ){
cerr<<"Fehler bei der Eingabe!"<< endl;
}
else {
cout<<"Die Eingabe war: " <<wert << endl;
}
getch();
return 0;
}


Wenn man einen Buchstaben oder Wörter eingibt, wird zwar in der Console ausgegeben, dass dies ein Fehler war,jedoch wird bei einer richtigen Eingabe nicht die Zahl ausgegeben.
Meine Frage:Wie bekomme ich es so hin, dass bei einer richtigen Eingabe (eine Zahl) die Ausgabe "Die Eingabe war: blablabla" erscheint?

redshark
25.12.2008, 23:00
irgendwie verssteh ich deine Formulierung der frage nicht....

Cr4ckEye
25.12.2008, 23:05
if( ! (cin>>wert) )
Was möchtest du denn mit dieser Line erreichen?^^

MfG

redshark
25.12.2008, 23:07
hehe hab ich mich auch schon gefragt... eig ist der ganze code unnütz...

s23_
25.12.2008, 23:08
Du bekommst keine Ausgabe, weil der Elseteil in deiner Abfrage nicht erreicht wird.
Abgesehen davon, für was 2 eingaben hintereinander?
cin>>wert;
if( ! (cin>>wert)

Der Wert wurde noch nie verarbeitet, wieso dann ein erneutes cin?

Erkläre am besten auch mal, was dein Programm zum Schluss können soll ;)

jookerxxx
25.12.2008, 23:08
Also ich hab das Buch >>C++ von A bis Z<< und da wird der C++
Code so ausgegeben.



In der Praxis sollten Sie sich aber nicht darauf verlassen,dass der Anwender
schon das Richtige eingegeben wird.Hierzu sollte man immer den Rückgabewert von 'cin' und dem Operator '>>' überprüfen.
Bei einer richtigen Angabe wird >>wahr<< und bei einer falschen Angaben
>>falsch<< zurückgegeben.Auf das Beispiel >>cin1.cpp<< bezogen
sieht eine solche Überprüfung wie folgt aus:



if( ! (cin >> wert) ) {#
cerr << "Fehler bei der Eingabe!\n";
}
else {
cout << "Die Eingabe war " <<wert << "\n";
}



Und jetzt >>cin1.cpp<<



// cin1.cpp
#include <iostream>
using namespace std;

int main(void) {
float wert;
cout << "Bitte eine Fließkommazahl : ";
cin >>wert;
cout << "Die Eingabe war " << wert << "\n";
return 0;
}


So.....das stand auf den Seiten.
Ich bin der Meinung, dass ich den Rückgabewert falsch in den Code
eingebaut habe.

Cr4ckEye
26.12.2008, 08:24
#include <iostream>
#include <conio.h>
using namespace std;

int main(){

float wert;

cout<<"Bitte eine Flie\xE1kommazahl eingeben:"<< endl;

if(!(cin>>wert)){
cerr<<"Fehler bei der Eingabe!"<< endl;
}
else{
cout<<"Die Eingabe war: " << wert << endl;
}
getch();
return 0;
}


So könnten es was werden.
Was du in if() schreibst ist eine Anweisung. D.h du kannst alles was du in if() schreibst auch manuell machen:

if(1 < 4) { ... } -> gro = 1 < 4;

Also entweder schreibst du:


cin >> wert;
if(!wert) { ...}


oder



if(!(cin>>wert)) { ... }

Deine Code war zwar gültig und lauffähig, aber man musste 2 mal die Zahl eingeben ;-)

MfG

jookerxxx
26.12.2008, 12:17
Danke.
Der Code funktioniert.Ich glaube ich muss noch lernen wir man einen
Code in den anderen einbindet.Wenn ich schon an den einfachsten Sachen scheiter.........was soll dan erst passieren, wenn ich mich an die
GUI-Programmierung wage....... :oops:

Cr4ckEye
26.12.2008, 12:49
ich würde dir wirklich raten, nicht direkt dir, sondern allgemein erst mal ne lange Zeit die finger von GUI zu lassen, da mann wieder total anders als bei sequentiellen Programmen denken muss. Lern erstmal die Grundlagen sehr gut, dann kannste mal deinen Befehlsumfang erweitern, Systemprogrammierung, Socket Programmierung, und dann vertieft (WinAPI) +/ GUI. je nach OS^^

MfG

jookerxxx
26.12.2008, 13:32
Du hast recht.Ich bin ja schon dabei die Grundlagen erstmal zu lernen, jedoch habe ich noch 50 Seiten blanke Theorie vor mir.Das mit der
GUI-Programmierung war nur ein vergleich für kompliziertere Themen.