abstand errechnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
obbba
Beiträge: 53
Registriert: 06.02.2006 17:33

abstand errechnen

Beitrag von obbba »

Code: Alles auswählen

Procedure abstand(x1,y1,x2,y2)
 
 xa=x1-x2
 ya=y2-y2
   
 If ya < 0
  ya=ya*-1
 EndIf
 If xa < 0
  xa=xa*-1
 EndIf
  
 ProcedureReturn Sqr(Pow(xa,2)*Pow(ya,2)) 

EndProcedure

Debug abstand(2,2,2,10)
Der sollte ja eigentlich 8 ausrechnen.
Was ist falsch?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

 If ya < 0
  ya=ya*-1
 EndIf
 If xa < 0
  xa=xa*-1
 EndIf 
Hä? Wie unnötig.
Und "ya.f=y2-y2" solltest du auch mal überdenken, kommt immer 0 dabei raus.
Außerdem "+" statt "*" bei der Quadratwurzel.
[EDIT]
Guck mal in die Hilfe, da gibts sogar ne Formelsammlung.
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.
Benutzeravatar
obbba
Beiträge: 53
Registriert: 06.02.2006 17:33

Beitrag von obbba »

Stimmt 2² ist das gleiche wie (-2)². Hab ich nicht dran gedacht.

ich hab einmal * statt + benutzt.

Code: Alles auswählen

Procedure abstand(x1,y1,x2,y2)
 
 xa=x1-x2
 ya=y1-y2
  
 ProcedureReturn Sqr(Pow(xa,2)+Pow(ya,2)) 

EndProcedure

Debug abstand(2,2,2,10)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

lieber obbba,

ich würde das ganze einfach als macro implementieren, und auf die ifs und den funktionsaufruf komplett verzichten...

Code: Alles auswählen

dist = Sqr(a*a+b*b)
scheiss auf Pov, wird hierfür nich benötigt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten