Heron-Algorithmus
Übersicht BlitzBasic Allgemein
Black SpiderBetreff: Heron-Algorithmus |
Di, Okt 18, 2005 16:46 Antworten mit Zitat |
|
---|---|---|
Hab n kleines Problem mit nem Prog, was auf gleicher weise wie der Heron-Algorithmus funktioniert.
"Integer divine zero" kommt dann immer... Code: [AUSKLAPPEN] Graphics 1024,768,16,1
AppTitle "Heron-Algorithmus" Local z Local aa, bb Local cc, dd Local ee, ff Local gg, hh Local ii, jj Local kk, ll Local mm, nn Local oo, pp Local qq, rr Local s, tt Local uu, vv Local ww, xx Local yy, zz eingabe() Function eingabe() Zahl# = Input("Gib die Zahl ein, dessen Wurzel wir uns nähern sollen ") If Zahl# <= 0 Then Cls Text 0,0,"Falsche Eingabe!!!" Eingabe() End If If Zahl# > 9999999999999999 Then Cls Delay 500 Text 0,0,"Erm... eine kleinere Zahl bitte !?" Eingabe() End If End Function z = Zahl# aa = z / 10 bb = z / aa cc = (aa + bb) / 2 dd = z / cc ee = (cc + dd) / 2 ff = z / ee gg = (ee+ff) / 2 hh = z / gg ii= (gg+hh) / 2 jj= z / ii kk=(ii+jj) / 2 ll= z / kk mm=(kk+ll) / 2 nn= z / mm oo=(mm+nn) / 2 pp= z / oo qq=(oo+pp) / 2 rr= z / qq s =(qq+rr) / 2 tt= z / s uu=(s +tt) / 2 vv= z / uu ww=(uu+vv) / 2 xx= z / ww yy=(ww+xx) / 2 zz= z / yy While Not(KeyHit(1)) If yy < zz Then Text 512, 334, "Die Wurzel aus "+z+"liegt zwischen"+yy+" und"+zz+ " . " End If If zz < yy Then Text 512, 334, "Die Wurzel aus "+z+"liegt zwischen"+zz+" und"+yy+ " . " End If Wend Danke! |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
Ofenrohr |
Di, Okt 18, 2005 17:00 Antworten mit Zitat |
|
---|---|---|
hi
ich hatte vor kurzdem das heron verfahren in der schule. habe ebenfalls eine programmierte lösung für das Problem gesucht. habe es mit php gemacht. hier der original php code: Code: [AUSKLAPPEN] <? function wurzel($zahl) { $min = 1; $max = $zahl; while (($i<=100) || ($min==$max)) { $min = mittelwert($zahl,$min); $max = $zahl/$min; } $ret = mittelwert($min,$max); return $ret; } function mittelwert($x,$y) { $ret = ($x+$y)/2; return $ret; } ?> der abbruchwert liegt bei 100 annäherungen oder gleichheit von min und max. wenn man das ganze in Blitzbasic konvertiert müsste das so aussehn: BlitzBasic: [AUSKLAPPEN]
kann nicht sagen, ob es in blitzbasic läuft, weil ich keinen bb complier in linux habe, müsste aber funktionieren. mfg ofenrohr EDIT: habe nochmal die abbruchbedingung mit 100 durchläufen auch funktionsfähig gemacht, ich hatte i=i+1 vergessen. außerdem hab ich die ganzen ; rausgenommen. |
||
Ofenrohr.net |
- Zuletzt bearbeitet von Ofenrohr am Mi, Okt 19, 2005 9:14, insgesamt einmal bearbeitet
Buddah |
Di, Okt 18, 2005 17:14 Antworten mit Zitat |
|
---|---|---|
um deine version zum laufen zu kriegen @ black spider
musst du Zahl# in deiner funktion eingabe() returnen also .... Return Zahl# End Function und beim aufruf der funktion dann Zahl# = eingabe() Damit funktioniert es dann.. allerdings solltest du es doch nochmal überarbeiten.. die version von ofenrohr sollte schonmal ein guter anfangspunkt sein. |
||
Alles ist gut so wie es ist und bald wird alles anders. |
Ofenrohr |
Mi, Okt 19, 2005 15:06 Antworten mit Zitat |
|
---|---|---|
was auchnoch zu bedenken ist:
soweit ich weis, muss man "function# eingabe()" schreiben, weil eine kommazahl zurückgegeben werden soll. standart müsste string ($) sein. Onlinehilfe - Function hat Folgendes geschrieben: Mit RETURN kann ein Wert zurückgeliefert werden. Soll ein Integerwert übergeben werden, so kann man ein %-Zeichen am Ende der Funktion-Bezeichnung einfügen (man kann es aber auch ganz weglassen). Soll ein Floatwert übergeben werden, dann muss man #-Zeichen angeben. Für einen Stringwert muss man ein $-Zeichen verwenden. mfg ofenrohr |
||
Ofenrohr.net |
AvaGast |
Mi, Okt 19, 2005 15:53 Antworten mit Zitat |
|
---|---|---|
Ofenrohr hat Folgendes geschrieben: soweit ich weis, muss man "function# eingabe()" schreiben, weil eine kommazahl zurückgegeben werden soll. standart müsste string ($) sein. Function Eingabe#() ... und Standard ist soweit ich weis Integer. |
||
Ofenrohr |
Mi, Okt 19, 2005 15:55 Antworten mit Zitat |
|
---|---|---|
tut mir leid, ich habe seit ewigkeiten kein blitzbasic mehr geschrieben. entschuldigung | ||
Ofenrohr.net |
Black Spider |
Mi, Okt 19, 2005 19:21 Antworten mit Zitat |
|
---|---|---|
@ll: Danke !!! Doch bei mir kommen sehr seltsame zeichenzahlen raus.
Hab das dann von "%" auf "#" (integer) gesetzt. Lesen kann mans trotzdem noch nicht. Hat einer von euch ne Ahnung warum? Trotzdem schonmal danke !! Code: [AUSKLAPPEN] AppTitle "Heron-Algorithmus"
wurzelaus% = Input("Wurzel aus ") eingabe(wurzelaus%) Function eingabe(waz) xnull# = waz / 10 ynull# = waz While ((xnull = ynull) Or (St<=100)) St = St+1 xnull = mittelwertvon(waz, xnull) ynull = waz / xnull If xnull < ynull Text 200,200,"zwischen "+xnull+" und "+ynull+" . " End If If xnull > ynull Text 700,700,"zwischen "+yNull+" und "+xNull+" . " End If Wend ret = mittelwertvon(xnull, ynull) Return ret End Function Function mittelwertvon(x, y) ret% = (x+y) / 2 Return ret End Function While Not(KeyHit(1)) If xnull < ynull Text 200,200,"zwischen "+xnull+" und "+ynull+" . " End If If xnull > ynull Text 200,200,"zwischen "+yNull+" und "+xNull+" . " End If Wend |
||
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif |
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group