2 C++ Fragen
Lactobacillus 18.02.2001 - 13:55 763 7
Lactobacillus
Addicted
|
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? (Stellea und Stelleb sind beide Integer-Variablen)
Wenn die Quadratwurzel aus Stellea * Stellea + Stelleb * Stelleb eine ganze Zahl ist, dann... Wenn Interesse besteht, oder es Unklarheiten gibt, dann kann ich auch den ganzen Quelltext posten/mailen... BTW: Ich verwende Visual C++ 6 SP4. Danke Lactobacillus, der noch das braucht um den *beep* endlich zu releasen [ 18 February 2001: Message edited by: Lactobacillus ]
|
Lactobacillus
Addicted
|
Keine C++ler hier? *heul*
|
Lactobacillus
Addicted
|
*schluchts*
|
Lactobacillus
Addicted
|
Thx, kann ich auch sqrt( Variable*Variable...) verwenden? Der Quelltext: int 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. } Also: Stellea und Stelleb nehmen alle Möglichkeiten (wenn max 2 ist 0-1 1-1 1-2 2-2) an. Wenn die Wurzel aus Stellea*Stellea + Stelleb*Stelleb eine ganze Zahl ist, dann... Wenn du willst dann schicke ich dir die ganze Datei, dass hier ist etwas gekürzt... Danke! Lactobacillus [ 19 February 2001: Message edited by: Lactobacillus ] [ 19 February 2001: Message edited by: Lactobacillus ] [ 19 February 2001: Message edited by: Lactobacillus ]
|
Ringding
Pilot
|
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.
|
Lactobacillus
Addicted
|
Thx, wie runde ich zur nächsten Zahl? Du meinst man sollte folgendes machen if (gerundet(Quadratwurzel(Stellea*Stellea+Stelleb*Stelleb) * gerundet(Quadratwurzel(Stellea*Stellea+Stelleb*Stelleb) == (Stellea*Stellea+Stelleb*Stelleb))... Wie könnte man konkret realisieren? Lactobacillus [ 19 February 2001: Message edited by: Lactobacillus ]
|
Ringding
Pilot
|
Für positive Zahlen floor(x+0.5)
Ja, so meine ich es
[ 19 February 2001: Message edited by: Ringding ]
|
Lactobacillus
Addicted
|
Thx, es funkt...
Lactobacillus
|