PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cin soll nur zahlen beachten!


Codeq
18.12.2001, 12:15
Hi,
hab als beding bekommen, das nach start so lange der Radius neu eingegeben werden kann, bis man als Radius eine 0 eingibt.
als nächste bedingung kam das nach erhalt des ergebnisses man eine beliebige tasten drücken solle um fortzufahren.
nur bei drücken des buchstaben ´e´s soll angehalten werden...
mein prob is nu das wenn ich am anfang als radius einen buchstaben einge das prog die do-while schleife unendlich oft wiederholt

ich vermute auch das C if (!taste) nicht kennt ...
wie frag ich ab ob ne variable null ist? :D


#include <iostream.h>

void main() {
double A,V,r,pi;
char taste;
pi = 3.1415926535897932384626433832795;

do {
cout << &quot;Bitte geben Sie den Radius des zu berechnenden Kreises ein\n&quot;;
cin >> r;

if (r != 0) {
cout << &quot;r = &quot;<<r<<&quot;\n&quot;;
A=4*pi*r*r;
V=(4/(3*pi))*r*r*r;
cout << &quot;Die Fl\x84\che betr\x84\gt: &quot; << A << &quot;\nDas Volumen betr\x84\gt: &quot; << V << &quot;\n&quot;;
cout << &quot;F\x81\r weiter bitte beliebige Taste dr\x81\cken&quot;;
cin >> taste;
}
if (!taste) { taste = &acute;e&acute;; }
} while ((r != 0) && (taste != &acute;e&acute;)) ;
}


MeltDown
18.12.2001, 13:00
hi Codeq,

Hier der Code
-----------------------------------------------------------------------
// csd.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include &quot;iostream.h&quot;

void main()
{

double A,V,r,pi;
char taste;
pi = 3.1415926535897932384626433832795;

do {
cout << &quot;Bitte geben Sie den Radius des zu berechnenden Kreises ein&quot; << endl;
cin >> r;
if (r != 0){
if(r<0){
taste=&acute;e&acute;;
}
cout << &quot;r = &quot;<<r<<endl;
A=4*pi*r*r;
V=(4/(3*pi))*r*r*r;
cout << &quot;Die Fl\x84\che betr\x84\gt: &quot; << A << &quot;\nDas Volumen betr\x84\gt: &quot; << V << endl;
cout << &quot;F\x81\r weiter bitte beliebige Taste dr\x81\cken&quot;;
cin >> taste;
}
if (!taste) {
taste = &acute;e&acute;;
}
} while ((r != 0) && (taste != &acute;e&acute;)&&(r<0)) ;


}

-----------------------------------------------------------------------
Erklärung:
if(r<0){ <- Falls der Benutzer Buchstaben drückt, bei Double <0
taste=&acute;e&acute;; <- E-Tastendruck simulieren
}

du solltest anstatt &quot;\n&quot; endl benutzen :D :D :D

cya

MeltDown

Codeq
18.12.2001, 13:14
wenn man bei der ersten eingabe einen buchstaben tippt, dann beendet die while schleife, allerdings rechnet er überall mit 0 und gibt ein ergebnis, was aber nicht passieren darf, er muss sofort aufhören ohne ergebnisse zu liefern ..

und wenn ich nach eingabe einer zahl, eine taste zum wiederholen drücken soll bricht er auch ab...

achja hab vergessen zu erzählen das ich keine Sprünge, ala return, goto oder so verwenden darf :(

MeltDown
22.12.2001, 04:05
Hi codeq,

anbei der code, ohne sprünge; Ich habe zusätzlich die math.h bibliothek eingebunden, um die unschöne PI=3.141..... zu ersetzen :D :D :D .

Ich habe den code mithilfe TurboC++ erstellt / geprüft.

-----------------------------------------------------------------------

#include <iostream.h>
#include <math.h>

void main() {

double A,V,r;
char taste;

do {
cout << &quot;-------------------------------------------------------------&quot; << endl;
cout << &quot;Bitte geben Sie den Radius des zu berechnenden Kreises ein!&quot; << endl;

if ((cin >> r)==0) {
cout << &quot;Sie haben einen Ungueltigen Wert eingegeben&quot; << endl;
cout << &quot;Dass Programm wird abgebrochen !&quot; << endl;
taste=&acute;e&acute;;

}
else {
cout << &quot;r = &quot;<<r<<&quot;\n&quot;;
A=4*M_PI*r*r;
V=(4/(3*M_PI))*r*r*r;
cout << &quot;Die Fl\x84\che betr\x84\gt: &quot; << A << &quot;\nDas Volumen betr\x84\gt: &quot; << V << &quot;\n&quot;;
cout << &quot;F\x81\r weiter bitte beliebige Taste dr\x81\cken&quot;;
cin >> taste;

if (!taste) { taste = &acute;e&acute;; }
}

} while ((r != 0) && (taste != &acute;e&acute;)) ;


}


-----------------------------------------------------------------------


cya

Codeq
22.12.2001, 20:24
ok... sieht schon sehr gut aus =)
die math.h darf ich natürlich nicht benutzen ... *g*

aber ein grosses prob hab ich da immernoch...

wenn man die binary startet und als erstes gleich einen buchstaben eingibt, dann rechnet er alles einmal durch... was er nicht soll.... =)

gibts es nix in #include <iostream.h> womit man is_alpha oder is_num abfragen kann???