URL: https://www.overclockers.at/offtopic/2_c_fragen_2602/page_1 - zur Vollversion wechseln!
Hallo,
meine 2 Fragen:
* Wie kann ich am besten testen, ob eine Variable (oder eine "Rechnung") eine ganze Zahl ist, oder nicht?
* Wie kann ich am besten aus einer Variable (oder einer "Rechnung") die Quadratwurzel ziehen?
Was ich eigentlich machen will?
Zitat(Stellea und Stelleb sind beide Integer-Variablen)
Wenn die Quadratwurzel aus Stellea * Stellea + Stelleb * Stelleb eine ganze Zahl ist, dann...
Keine C++ler hier? *heul*
*schluchts*
Thx,
kann ich auch sqrt(Variable*Variable...) verwenden?
Der Quelltext:
Zitatint Stellea(1),Stelleb(1),max;
(...)
while (Stellea<=max) //max wird vorher schon von der Tastertur eingelesen
{
if Quadratwurzel(Stellea * Stellea + Stelleb * Stelleb) ist eine ganze Zahl (=keine Nachkommastellen)
{
cout<<"!"<<Stellea<<" "<<Stelleb<<endl;
}
Stelleb++;
if (Stelleb==(max+1))
{
Stellea++;
Stelleb=Stellea; //Optim.
}
Rechnen mit Gleitpunktzahlen ist nie so einfach wie es ausschaut. Der Test, ob irgendeine Zahl eine ganze Zahl ist, ist unmöglich, weil bei den meisten Berechnungen Rundungsfehler auftreten.
In diesem Fall kommst du noch einfach weg: Um zu überprüfen, ob die Wurzel eine ganze Zahl ist, ziehe die Wurzel und runde sie zur nächsten ganzen Zahl. Dann quadriere diese gerundete Zahl und überprüfe, ob sie mit der Ausgangszahl übereinstimmt.
Thx,
wie runde ich zur nächsten Zahl?
Du meinst man sollte folgendes machen
Zitatif (gerundet(Quadratwurzel(Stellea*Stellea+Stelleb*Stelleb) * gerundet(Quadratwurzel(Stellea*Stellea+Stelleb*Stelleb) == (Stellea*Stellea+Stelleb*Stelleb))...
Für positive Zahlen floor(x+0.5)
Ja, so meine ich es
[ 19 February 2001: Message edited by: Ringding ]
Thx, es funkt...
Lactobacillus
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2024