Seite 1 von 3

Min - und Max - Funktion

Verfasst: 19.02.2010 15:18
von EgonEprom
In sachen PurebBasic bin ich scheinbar blutiger Anfänger: gibt's die Funktion Min() oder Max() wirklich nicht oder bin ich nur zu blöd, die zu finden?

mfg Egon

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 15:26
von man-in-black
nö, gibts nich.
vllt als api, aber nicht als PB-Befehl.

musst dir halt ne procedure,... schreiben :wink:

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 15:28
von RSBasic
@EgonEprom
Nein sowas gibt es nicht, aber ich weiß nicht, wofür du sowas brauchst.
Kannst du mir kurz erzählen, was die Funktionen machen sollen?

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 15:41
von Kaeru Gaman
Funktionen wie Min() und Max() stellen keine Basisfunktionalität dar, es sind eher recht komplexe und spezifische Anwendungen.
Sprachen oder Oberflächen die solche Funktionen besitzen sind meist in sich bereits recht komplex und spezifisch,
davon ist PureBasic eher das genaue Gegenteil.

das Problem einer solchen Funktion ist die variable Parameterzahl.
du wirst dich also im Normalfall auf ein Array oder eine Liste beziehen wollen.
da das dann sowieso mit einer Schleife behandelt werden muss, entsteht dir kein Verlust, eine Solche selber zu schreiben.

wenn du genauere Angaben machst wofür du es braucht ist das schnell gelöst.

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 15:44
von STARGÅTE
vermutlich einfach nur den maximalen Wert von 2 oder mehrere Zahlen zurück geben.

Dabei gibt es jedoch n Typ-Frage (Integer, Fließkomma)

man könnte auch n Liste übergeben oder ein Array, deswegen gibt es vermutlich in PB keine Funktion Max, weil jeder Programmieer selber entscheiden soll/darf wie seine Max-Funktion arbeiten soll.

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 15:57
von EgonEprom
Diese Antworten geben mit tieferen Einblick, was PureBasic wirklich ist.
Nein kein Problem, die Min()-Funktion ist schnell geschrieben, nur wozu, wenn's diese schon gäbe??

Ich arbeite bislang -noch- mit GfA-Basic (Dos-Version) und da akzeptiert die Min()-Funktion beliebig(?) viele nurmerische Ausdrücke, um die Typen der Veriablen (es gibt 4 verschiedene) braucht man sich keine Gedanken zu machen, das System holt immer das bestmögliche an Qualitat (sprich: Genauigkeit) raus.

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 16:03
von Kaeru Gaman
tja... Profis lassen keine Maschine für sich entscheiden, was für eine Qualität sie benötigen.

wenn ich Zahlen über 72 057 594 037 927 936 (2^56) mit einer Genauigkeit von +/- 1 verarbeiten will, stehe ich mit Double auf dem Schlauch und muss Quad nehmen.

Re: Min - und Max - Funktion

Verfasst: 19.02.2010 20:09
von sibru
so was hier:?

Code: Alles auswählen

;Modul      min Version 1.00 vom 27.04.2004
;
;Funktion:  liefert die kleinste von 2 Integer-Zahlenwerten
;
;Aufruf:    Minimum.l = min(Zahl1.l, Zahl2.l)
;
Procedure Min(w1,w2)
  If w1<w2
    ProcedureReturn w1
  EndIf
  ProcedureReturn w2
EndProcedure 
Max ist sehr ähnlich... und für andere PB-VariablenTypen brauchste jeweils
eigene Funktionen (MinD(), MaxQ...)

Gruss
SiBru

Re: Min - und Max - Funktion

Verfasst: 20.02.2010 12:24
von Kevin
Max ist sehr ähnlich... und für andere PB-VariablenTypen brauchste jeweils
eigene Funktionen (MinD(), MaxQ...)
wenn es nur sowas ist dann kann man das auch so machen:

Code: Alles auswählen


Macro Min(w1, w2)
 If w1 < w2
   w1 = w2
 EndIf
EndMacro

Macro Max(w1, w2)
 If w1 > w2
   w1 = w2
 EndIf
EndMacro


 Dim Test(8)

 Test(5) = 7
 Min( Test(5) , 8 )
 
 Debug Test(5)
 
 
 bla=345
 Max(bla, 200)

 Debug bla

Re: Min - und Max - Funktion

Verfasst: 20.02.2010 12:33
von Kaeru Gaman
@Kevin:
check deinen code noch mal, da ist mindestens ein Tippfehler drin.