heron
heron
hi
Ihr kennt doch sicherlich das Heronverfahren zum bestimmen von Quadratwurzeln.
ich wollte sin programm in pb schreiben bleibe aber schon im ansatz stecken, denn pb erlaubt es mri nicht zahlen zu speichern bzw auszugeben.
die formel laute tja
"bitte Radikand eingeben" (A)
"bitte Startwert eingeben" (l)
b=A/l
l=(b+l)/2
wäre echt vol dankbar wenn mir jemand helfen kann
added mich doch bei icq 271569701 wär jeen dankbar der mit bei den grundbefehlen helfen kann/will
mfg zeck
Ihr kennt doch sicherlich das Heronverfahren zum bestimmen von Quadratwurzeln.
ich wollte sin programm in pb schreiben bleibe aber schon im ansatz stecken, denn pb erlaubt es mri nicht zahlen zu speichern bzw auszugeben.
die formel laute tja
"bitte Radikand eingeben" (A)
"bitte Startwert eingeben" (l)
b=A/l
l=(b+l)/2
wäre echt vol dankbar wenn mir jemand helfen kann
added mich doch bei icq 271569701 wär jeen dankbar der mit bei den grundbefehlen helfen kann/will
mfg zeck
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Heronverfahren ist doch einfach nur soetwas wie suksessive Aproximation, oder?
Code: Alles auswählen
Procedure.f sqrt(Val.f)
If Val > 0.0
Result.f = 0.0
oldResult.f = 0.000001
Relative.f = Val.f
While Abs(oldResult-Result) >= 0.000001 And (Result * Result) <> Val
If (Result * Result) > Val
Relative = Abs(Relative) * -0.5
Debug "Zu groß"
Else
Relative = Abs(Relative) * 0.5
Debug "Zu klein"
EndIf
oldResult = Result
Result + Relative
Wend
ProcedureReturn Result
EndIf
EndProcedure
OpenConsole()
z.f = ValF(Input())
PrintN("")
PrintN(StrF(sqrt(z)))
Input()
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Das ist doch bestimmt der Ausgabestring?writeln('Die wurzel aus' ,A,' ist 'l)
Woanders werden doch keine Strings benutzt. Also wo liegt jetzt das problem? Du rechnest mit den Floatvariablen und wandelst die am ende in Strings um.
z.B. so:
Code: Alles auswählen
MessageRequester("Ergebnis", "Die Wurzel aus " + STRF(A, 2) + " ist " + STRF(l, 2))
MFG PMV
so kannste es machen:
oder einfach:
Code: Alles auswählen
DefType.f A,b,l
A = ValF(InputRequester("","Bitte Radikant eingeben",""))
l = ValF(InputRequester("","Bitte Startwert eingeben",""))
b = A/l
While Int(l * 10000) <> Int(b * 10000)
l = (l + b)/2
b = A/l
Wend
MessageRequester("Wurzel", "Die Wurzel aus " + StrF(A) + " ist " + StrF(l))
Code: Alles auswählen
MessageRequester("Wurzel", "Die Wurzel ist " + StrF(Sqr(ValF(InputRequester("","Bitte Radikant eingeben","")))))