Entwickler-Ecke
Sonstiges (Delphi) - Wurzelrechnung im Konsolenfenster
654321 - So 14.10.07 19:41
Titel: Wurzelrechnung im Konsolenfenster
Hallo,
ich habe folgendes Problem: ich möchte in einer Konsolenanwendung die Wurzel ausrechnen und zwar nicht mit Real sondern mit Integer. Nun habe ich versucht mit den div für Integer zu arbeiten und obwohl der Debugger keinen Fehler anzeigt wird, egal welche Zahl ich eingebe, immer 0 als Wurzel ausgerechnet. Könntet ihr mir sagen wo der Fehler liegt?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| program QuadratundWurzelBerechnung;
uses Windows, Messages, SysUtils, Dialogs;
var x: integer; y: integer; Rechnung: string;
begin showmessage('Test');
Rechnung:= Inputbox ('Quadratrechnen und Wurzelziehen', 'Geben Sie bitte eine Zahl ein, die quadriert und aus der die Wurzel gezogen werden soll. Die Zahl muss aufgrund der Beschränkungen durch Integer zwischen -46340 und +46340 liegen.','1');
x:= strtoint(Rechnung);
y:= x;
if ((y <=-46340) or (y >=46340))
then
begin showmessage ('Geben Sie bitte eine ZAHL zwischen -46340 und +46340 ein!');
end
else
begin y:= x; x:= x*x; y:= y*(1 div 2);
showmessage ('Das Quadrat von '+Rechnung+' ist '+inttostr(x)+' und die Wurzel aus '+Rechnung+' ist '+inttostr(y)+'!');
end;
end. |
Danke im Vorraus.
MfG
Numberz
Moderiert von
Narses: Delphi-Tags hinzugefügt
jakobwenzel - So 14.10.07 19:49
1 div 2 ist 0, weil 2 0 mal in 1 reinpasst. Und 0 mal irgendwas ist nun mal 0.
Und vorallem ist die Wurzel einer Zahl nur in den allerwenigsten Fällen die Hälfte von der Zahl.
654321 - So 14.10.07 19:59
argh danke hab meinen fehler gefunden ;-)
MfG
Numberz
654321 - So 14.10.07 20:13
Hmm habs jetzt mal mit Power versucht aber ohne Erfolg, der Debugger sagt inkompatible Typen Integer und Extended und ich hab keine Ahnung wie ich das beheben kann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| program QuadratundWurzelBerechnung;
uses Windows, Messages, SysUtils, Dialogs, math;
var x: integer; y: integer; Rechnung: string;
begin showmessage('Test');
Rechnung:= Inputbox ('Quadratrechnen und Wurzelziehen', 'Geben Sie bitte eine Zahl ein, die quadriert und aus der die Wurzel gezogen werden soll. Die Zahl muss aufgrund der Beschränkungen durch Integer zwischen -46340 und +46340 liegen.','1');
x:= strtoint(Rechnung);
y:= x;
if ((y <=-46340) or (y >=46340))
then
begin showmessage ('Geben Sie bitte eine ZAHL zwischen -46340 und +46340 ein!');
end
else
begin y:= x; x:= x*x; y:= power (y , 2)
showmessage ('Das Quadrat von '+Rechnung+' ist '+inttostr(x)+' und die Wurzel aus '+Rechnung+' ist '+inttostr(y)+'!');
end;
end. |
MfG
Numberz
Moderiert von
Narses: Delphi-Tags hinzugefügt
jakobwenzel - So 14.10.07 20:18
Power liefert eine Komma-Zahl zurück. Du musst also noch mit round runden.
654321 - So 14.10.07 20:20
Ahh, danke für den Tipp!
MfG
Numberz
654321 - So 14.10.07 20:26
Die Delphi-Hilfe sagt mir zu Round: "Round rundet einen Wert des Typ Real auf einen Integer-Wert."
Das Problem ist aber das mein Wert ja schon ein Integer Wert ist und ich keine Real Werte verwenden will. Gibt es vielleicht etwas analoges für Integer?
MfG
Numberz
Jann1k - So 14.10.07 20:30
zeig mal bitte deinen aufruf von round und power, der sollte nämlich so sein:
Delphi-Quelltext
1:
| y:= round(power (y , 2)); |
und bitte verwende delphi-tags wenn du Quelltext postest das steigert die Lesbarkeit enorm.
654321 - So 14.10.07 20:41
Vielen Dank Jann1k, da war der Fehler!
Und das mit den Delphitags mach ich in Zukunft auch! ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!