Fehler im Code

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

COS

Betreff: Fehler im Code

BeitragFr, Jul 28, 2006 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

dieses Programm soll in 1000 Intervallen mit dem Heron Verfahren eine Wurzel berechnen, doch es gibt eine Fehlermedlung, was ist falsch?

R = Input ("Radikant")
W = Input ("Näherungswert")


For I=0 To 1000

R/W = S ;Berechnen des 2. Werts
(S+W)/2 = M ; Berechnen des Mittelwerts
W = M
Next

Print M

etlam

BeitragFr, Jul 28, 2006 9:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
du musst schreiben:
Code: [AUSKLAPPEN]
R = Input ("Radikant")
W = Input ("Näherungswert")


For I=0 To 1000

S = R/W ;Berechnen des 2. Werts
M = (S+W)/2 ; Berechnen des Mittelwerts
W = M
Next

Print M

die Variable, der das ergebnis zugewiesen werden soll, muss vorne stehen, also statt
Code: [AUSKLAPPEN]

R/W = S

musst du schreiben:
Code: [AUSKLAPPEN]

S=R/W


etlam
 

COS

BeitragFr, Jul 28, 2006 9:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Danke

wenn er mit Kommazahlen arbeiten soll, muss ich dann # vor den Variablen schreiben?

etlam

BeitragFr, Jul 28, 2006 9:56
Antworten mit Zitat
Benutzer-Profile anzeigen
bei Kommazahlen schreibst du einfach # nach den Variablen
Beispiel:
Code: [AUSKLAPPEN]

x#= 2.872
y# = 2.718
q# = x# + y#
Print q#

etlam
 

COS

BeitragFr, Jul 28, 2006 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wieso macht er es nicht tausendmal sondern nur einen Intervall?

etlam

BeitragFr, Jul 28, 2006 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, so kannst du dir das ausgeben lassen:
Code: [AUSKLAPPEN]

R# =Input ("Radikant")
W# = Input ("Näherungswert")

For I% = 0 To 999

S#= R#/W# ;Berechnen des 2. Werts
M# = (S#+W#)/2 ; Berechnen des Mittelwerts
W# = M#
i% = i% + 1 ; i zählt immer eins hoch.
Next
Print (i% + " intervalle") ;i ausgeben
Print M#

so macht es sicher 1000 intervalle.

etlam

StepTiger

BeitragFr, Jul 28, 2006 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
oder eben so:
Code: [AUSKLAPPEN]
R# = Input ("Radikant")
W# = Input ("Näherungswert")

For I=1 To 1000

   S# = R#/W# ;Berechnen des 2. Werts
   M# = (S#+W#)/2. ; Berechnen des Mittelwerts
   W# = M#

Next

Print M#

WaitKey


Aber da stellt sich das Problem, dass BB gerade mal 5 Nachkommastellen angibt.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

COS

BeitragFr, Jul 28, 2006 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Auch wenn es eine exe ist?

etlam

BeitragFr, Jul 28, 2006 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, auch wenn es eine exe ist.

etlam

StepTiger

BeitragFr, Jul 28, 2006 10:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja auch dann.

Ich hab noch einen kürzeren Code um eine Wurzel zu ziehen:
Code: [AUSKLAPPEN]
R#=Input("Radikant   ")
M#=R#^.5
Print M#
waitkey
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Shark

BeitragFr, Jul 28, 2006 11:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ist vielleicht kürzer StepTiger aber auch langsamer Wink!
Ich habs mal getestet!

Code: [AUSKLAPPEN]

R#=Input("Radikant   ")
Start% = MilliSecs()
For i = 1 To 100000
   M#=R#^.5
Next
Stopi% = MilliSecs()
Print M#
Print "Mit ^5"
Ende% = Stopi% - Start%
Print Ende + " ms."
Start% = MilliSecs()
For i = 1 To 100000
   M# = Sqr#(R#)
Next
Print "Mit Sqr"
Stopi% = MilliSecs()
Ende = Stopi% - Start%
Print Ende + " ms."
WaitKey


mfg Shark

StepTiger

BeitragFr, Jul 28, 2006 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber schneller als der von COS

war nur ein Beispiel

Mal ein kompletter Vergleich:

Code: [AUSKLAPPEN]
R# = Input ("Radikant")
W# = Input ("Näherungswert")

t1=MilliSecs()

For c=1 To 100000
   For I=1 To 1000

      S# = R#/W# ;Berechnen des 2. Werts
      M# = (S#+W#)/2. ; Berechnen des Mittelwerts
      W# = M#

   Next
Next

Print M#
t1=MilliSecs()-t1

t2=MilliSecs()
For c=1 To 100000
   M#=R#^.5
Next
Print M#
t2=MilliSecs()-t2

t3=MilliSecs()
For c=1 To 100000
   M#=Sqr#(R#)
Next
Print M#
t3=MilliSecs()-t3

Print "COS' Code:   "+t1
Print "R^.5:   "+t2
Print "SQR:   "+t3

WaitKey
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group