Hallo allerseits!
Ich möchte euch nun, ziemlich stolz, meine erste UDF! Weitere sollen folgen!
Die MathEx-UDF liegt in neuer Version vor!!!
Aktuelle Version: 3.0.0.0
Status: Beta
Anzahl Funktionen: 23
Sprache: Deutsch
Zusammenfassung:
Die MathEx-UDF ergänzt AutoIt um hilfreiche Funktionen, die im Bereich Mathematik liegen. Hier ein Liste mit einem kurzem Kommentar:
- _MathEx_Checksum Berechnet verschiedene Quersummen
- _MathEx_IsDivisible Prüft, ob eine Zahl durch eine andere teilbar ist
- _MathEx_IsPrime Prüft, ob eine Zahl eine Primzahl ist
- _MathEx_Pi Berechnet Pi
- _MathEx_Max Ermittelt die größte Zahl in einem Array
- _MathEx_Min Ermittelt die kleinste Zahl in einem Array
- _MathEx_CreatePrimes Erstellt Primzahlen
- _MathEx_IsNumber Prüft, ob es sich bei einem String um eine Zahl handelt
- _MathEx_Sqrt Berechnet eine beliebige Wurzel
- _MathEx_Mean Berechnet verschiedene Mittel
- _MathEx_Log Berechnet einen beliebigen Logarithmus
- _MathEx_IsEven Prüft, ob eine Zahl gerade ist.
- _MathEx_PQ Rechnet die PQ-Formel durch
- _MathEx_StandardDeviation Berechnet die Standart-Abweichung
- _MathEx_GGT Ermittelt den ggT von zwei Zahlen
- _MathEx_KGV Ermittelt das kgV von zwei Zahlen
- _MathEx_Factorial Ermittelt verschiedene Fakultäten
- _MathEx_Eul Errechnet die eulersche Zahl relativ genau
- _MathEx_Point_Distance Gibt die Entfernung zwischen zwei Punkten an
- _MathEx_Point_InRectangle Prüft, ob sich ein Punkt in einem Rechteck befindet
- _MathEx_GraphInfo Errechnet Steigung und y-Achsenabsschnitt einer linearen Funktion aufgrund von zwei Punkten
- _MathEx_Point_OnLine Ermittelt, ob sich ein Punkt über, unter oder auf einer Linie befindet
- _MathEx_Point_OnSegment Ermittelt, ob sich ein Punkt auf einer Strecke befindet
Changelog:
Version 3.0.0.0 (Beta)
- Hinzufügen vieler Funktionen
- Löschen von Account of Settlement (weil Schwachsinn)
- Korrigieren von vielen Bugs
- Not To-Do-List entfernt
Version 2.0.1.0:
- Einschränkungen in _MathEx_CreatePrimes
- _MathEx_IsDivisible überarbeitet
- _MathEx_Pi überarbeitet
- Not To-Do-List hinzugefügt (Sachen, die nicht getan werden)
Version 2.0.0.0 (Beta):
Folgende Funktionen hinzu gefügt:
- _MathEx_IsNumber
- _MathEx_Sqrt
- _MathEx_Mean
- _MathEx_Log
- _MathEx_IsEven
Übersetzung ins deutsche
Performance der Funktion _MathEx_IsPrime erheblich gesteigert
(statt bis zu $x / 2 zu rechnen, reicht Sqrt($x) vollkommen aus)
Alles anzeigen
Herzlichen Dank an die Mitentwickler, die mich unterstützt haben: BugFix, eukalyptus, Progandy, Depreed, AutoBert, Stilgar, L3viathan2142 und Niko H. (ChaosKeks)
...und natürlich die ganze deutsche Community!
Source-Code
; #INDEX# =======================================================================================================================
; Titel..........: MathEx
; AutoIt Version.: 3.3.0.0 ++
; Sprache........: Deutsch
; Beschreibung...: Diese UDF ergänzt um einige mathematische Funktionen.
; Version........: 3.0.0.0
; ===============================================================================================================================
; #AUTHOR(S)# ===================================================================================================================
; Hauptentwickler: Matthias Gianfelice
; Mitentwickler..: BugFix, eukalyptus, Progandy, Deepred, AutoBert, Stilgar, L3viathan2142, Niko H.
;
; >> !! Danke an die ganze deutsche AutoIt Community !! <<
;
; ===============================================================================================================================
; #CURRENT# =====================================================================================================================
; _MathEx_Checksum
; _MathEx_IsDivisible
; _MathEx_IsPrime
; _MathEx_Pi
; _MathEx_Max
; _MathEx_Min
; _MathEx_CreatePrimes
; _MathEx_IsNumber
; _MathEx_Sqrt
; _MathEx_Mean
; _MathEx_Log
; _MathEx_IsEven
; _MathEx_PQ
; _MathEx_StandardDeviation
; _MathEx_GGT
; _MathEx_KGV
; _MathEx_Factorial
; _MathEx_Eul
; _MathEx_Point_Distance
; _MathEx_Point_InRectangle
; _MathEx_GraphInfo
; _MathEx_Point_OnLine
; _MathEx_Point_OnSegment
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Checksum
; Beschreibung...: Gibt die Quersumme einer Zahl zurück.
; Syntax.........: _MathEx_Checksum($number[, $modus=0])
; Parameter......: $number - Die Nummer, dessen Quersumme ermittelt werden soll
; $modus - Welche Quersumme zurückgegeben werden soll: 0: normal; 1:iterativ; 2:alternativ
; Rückgaben......: Erfolg - Die Quersumme
; Fehler - False, wenn $number oder $modus ungültig sind.
; Autor(en)......: BugFix <BugFix at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Checksum($number, $modus = 0)
Local $integer_number_mathex_checksum = Number($number)
If Not _MathEx_IsNumber($integer_number_mathex_checksum) Or Not $integer_number_mathex_checksum > 0 Or Not IsInt($modus) Then Return False
While StringLen($integer_number_mathex_checksum) > 1
Local $array_number_mathex_checksum = StringSplit($integer_number_mathex_checksum, '', 2)
$integer_number_mathex_checksum = 0
If $modus = 2 Then
Local $mul = -1
For $i = UBound($array_number_mathex_checksum) - 1 To 1 Step -1
$array_number_mathex_checksum[$i - 1] = $array_number_mathex_checksum[$i] + ($mul * $array_number_mathex_checksum[$i - 1])
$mul *= -1
Next
Return $array_number_mathex_checksum[0]
Else
For $i = 0 To UBound($array_number_mathex_checksum) - 1
$integer_number_mathex_checksum += $array_number_mathex_checksum[$i]
Next
If $modus = 0 Then ExitLoop
EndIf
WEnd
Return $integer_number_mathex_checksum
EndFunc ;==>_MathEx_Checksum
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_IsDivisible
; Beschreibung...: Prüft, ob eine Zahl durch eine andere teilbar ist.
; Syntax.........: _MathEx_IsPrime($numdividend, $numdivisor)
; Parameter......: $numdividend - Der Dividend
; $numdivisor - Der Divisor
; Rückgaben......: Erfolg - Gibt 1 zurück, wenn der Dividend durch den Divisor teilbar ist, gibt 0 zurück, wenn nicht.
; Fehler - Gibt -1 zurück und setzt @error
; |0 - $numdividend und $numdivisor sind nicht teilbar
; |1 - $numdivisor ist 0
; Autor(en)......: eukalyptus <eukalyptus at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_IsDivisible($numdividend, $numdivisor)
If Not _MathEx_IsNumber($numdividend) Or Not _MathEx_IsNumber($numdivisor) Then
SetError(2)
Return -1
EndIf
If $numdivisor = 0 Then
SetError(1)
Return -1
EndIf
If Not Mod($numdividend, $numdivisor) Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_MathEx_IsDivisible
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_IsPrime
; Beschreibung...: Prüft, ob eine Zahl eine Primzahl ist.
; Syntax.........: _MathEx_IsPrime($number[, $one_prime])
; Parameter......: $number - Die Nummer, die geprüft werden soll
; $one_prime - Auf 1 setzen, wenn 1 eine Primzahl sein soll.
; Rückgabe.......: Erfolg - Gibt 1 zurück, wenn die Zahl eine Primzahl ist, 0 wenn nicht
; Fehler - Gibt -1 zurück, wenn $number keine Zahl ist, oder $one_prime ungültig ist.
; Author ........: Progandy <Progandy at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_IsPrime($number, $one_prime = 0)
If Not _MathEx_IsNumber($number) Or Not IsInt($one_prime) Or $one_prime > 1 Or $one_prime < 0 Then Return -1
If $one_prime And $number = 1 Then Return 1
If $number = 1 Then Return 0
If $number = 2 Then Return 1
If Mod($number, 2) = 0 Then Return 0
For $i = 3 To Sqrt($number) Step 2
If Mod($number, $i) = 0 Then Return 0
Next
Return 1
EndFunc ;==>_MathEx_IsPrime
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Pi
; Beschreibung...: Gibt Pi relativ genau zurück
; Syntax.........: _MathEx_Pi()
; Rückgaben......: Erfolg - Gibt Pi zurück
; Autor(en)......: Stilgar <Stilgar at autoit dot de>, Deepred <Deepred at autoit dot de>,
; Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Pi()
Return 4 * ATan(1)
EndFunc ;==>_MathEx_Pi
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Max
; Beschreibung...: Gibt die größte Zahl in einem Array zurück.
; Syntax.........: _MathEx_Max($aNumbers[, $mode = 0])
; Parameter......: $aNumbers - 0-basiertes Array mit den Zahlen
; $mode - Was zurückgegeben werden soll:
; |0: Die größte Nummer
; |1: Die ID der größten Nummer im Array
; |2: Beides wird in einem Array zurückgegeben: 0 enthält die größte Nummer und 1 die ID.
; Rückgabe.......: Erfolg - Gibt einen String, eine Nummer oder ein Array zurück
; Fehler - Gibt -1 zurück und setzt @error
; |1 - $aNumbers ist kein Array oder $mode ist kein Integer
; |2 - Eine Nummer im Array ist keine Zahl, @extended enthält die Id
; Bemerkungen....: Wenn mehrere "größte" Zahlen enthalten sind, wird die erste zurückgegeben
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Max($aNumbers, $mode = 0)
If Not IsArray($aNumbers) Or Not IsInt($mode) Then
SetError(1)
Return -1
EndIf
For $i = 0 To UBound($aNumbers) - 1
If Not _MathEx_IsNumber($aNumbers[$i]) Then
SetError(2, $i)
Return -1
EndIf
Next
Local $integer_mathex_maximal_nummer = 0
For $i = 0 To UBound($aNumbers) - 1
If Number($aNumbers[$i]) > $aNumbers[$integer_mathex_maximal_nummer] Then $integer_mathex_maximal_nummer = $i
Next
Switch $mode
Case 0
Return $aNumbers[$integer_mathex_maximal_nummer]
Case 1
Return $integer_mathex_maximal_nummer
Case 2
Local $array_mathex_number_final[2] = [$aNumbers[$integer_mathex_maximal_nummer], $integer_mathex_maximal_nummer]
Return $array_mathex_number_final
EndSwitch
EndFunc ;==>_MathEx_Max
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Min
; Beschreibung...: Gibt die kleinste Zahl in einem Array zurück.
; Syntax.........: _MathEx_Min($aNumbers[, $mode = 0])
; Parameter......: $aNumbers - 0-basiertes Array mit den Zahlen
; $mode - Was zurückgegeben werden soll:
; |0: Die kleinste Nummer
; |1: Die ID der größten Nummer im Array
; |2: Beides wird in einem Array zurückgegeben: 0 enthält die kleinste Nummer und 1 die ID.
; Rückgabe.......: Erfolg - Gibt einen String, eine Nummer oder ein Array zurück
; Fehler - Gibt -1 zurück und setzt @error
; |1 - $aNumbers ist kein Array oder $mode ist kein Integer
; |2 - Eine Nummer im Array ist keine Zahl, @extended enthält die Id
; Bemerkungen....: Wenn mehrere "kleinste" Zahlen enthalten sind, wird die erste zurückgegeben
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Min($aNumbers, $mode = 0)
If Not IsArray($aNumbers) Or Not IsInt($mode) Then
SetError(1)
Return -1
EndIf
For $i = 0 To UBound($aNumbers) - 1
If Not _MathEx_IsNumber($aNumbers[$i]) Then
SetError(2, $i)
Return -1
EndIf
Next
Local $integer_mathex_minimal_nummer = 0
For $i = 0 To UBound($aNumbers) - 1
If Number($aNumbers[$i]) < $aNumbers[$integer_mathex_minimal_nummer] Then $integer_mathex_minimal_nummer = $i
Next
Switch $mode
Case 0
Return $aNumbers[$integer_mathex_minimal_nummer]
Case 1
Return $integer_mathex_minimal_nummer
Case 2
Local $array_mathex_number_final[2] = [$aNumbers[$integer_mathex_minimal_nummer], $integer_mathex_minimal_nummer]
Return $array_mathex_number_final
EndSwitch
EndFunc ;==>_MathEx_Min
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_CreatePrimes
; Beschreibung...: Gibt ein Array voller Primzahlen zurück.
; Syntax.........: _MathEx_CreatePrimes($number)
; Parameter......: $number - Zwischen 2 und $number werden die Primzahlen gesucht
; Rückgaben......: Erfolg - Gibt ein Array zurück. Im 0ten Element steht die Anzahl an Zahlen, im Rest die Primzahlen selbst.
; Fehler - Gibt 0 zurück, wenn $number kein Integer ist oder kleiner als 2 ist
; Autor(en)......: AutoBert <AutoBert at autoit dot de>, Progandy <Progandy at autoit dot de>,
; Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_CreatePrimes($number)
If Not IsInt($number) Or $number < 2 Or $number > 16777215 Then Return 0
$number += 3
Local $array_mathex_gestrichen[$number - 2]
For $i = 0 To $number - 3
$array_mathex_gestrichen[$i] = False
Next
Local $i = 2
While $i * $i <= $number
If Not $array_mathex_gestrichen[$i] Then
For $j = $i * $i To $number - 3 Step $i
$array_mathex_gestrichen[$j] = True
Next
EndIf
$i = $i + 1
WEnd
Local $integer_mathex_anzahl = 0
For $i = 2 To $number - 3
If Not $array_mathex_gestrichen[$i] Then $integer_mathex_anzahl += 1
Next
Local $array_mathex_primzahlen[$integer_mathex_anzahl + 1], $integer_mathex_aktuell = 1
$array_mathex_primzahlen[0] = $integer_mathex_anzahl
For $i = 2 To $number - 3
If Not $array_mathex_gestrichen[$i] Then
$array_mathex_primzahlen[$integer_mathex_aktuell] = $i
$integer_mathex_aktuell += 1
EndIf
Next
Return $array_mathex_primzahlen
EndFunc ;==>_MathEx_CreatePrimes
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_IsNumber
; Beschreibung...: Prüft, ob ein String gleich einer Nummer ist.
; Syntax.........: _MathEx_IsNumber($number)
; Parameter......: $number - Der String, der geprüft werden soll.
; Rückgaben......: Gibt 1 zurück, wenn der String eine Zahl ist, oder 0 wenn es nicht der Fall ist.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_IsNumber($number)
If Not Number($number) = 0 Then
Return 1
ElseIf $number == "0" Or $number == 0 Then
Return 1
MsgBox(0, "", "")
Else
Return 0
EndIf
EndFunc ;==>_MathEx_IsNumber
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Sqrt
; Beschreibung...: Gibt die nte Wurzel von einer Zahl zurück.
; Syntax.........: _MathEx_Sqrt($number[, $sqrt=2])
; Parameter......: $number - Die Nummer, aus der die Wurzel gezogen werden soll
; $sqrt - Welche Wurzel gezogen werden soll
; Rückgaben......: Erfolg - Gibt die Wurzel zurück
; Fehler - Gibt -1 zurück und setzt @error:
; |1: $number oder $sqrt ist keine Nummer
; |2: $number ist negativ
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Sqrt($number, $sqrt = 2)
If Not _MathEx_IsNumber($number) Or Not _MathEx_IsNumber($sqrt) Then
SetError(1)
Return -1
EndIf
If $number < 0 Then
SetError(2)
Return -1
EndIf
Return $number ^ (1 / $sqrt)
EndFunc ;==>_MathEx_Sqrt
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Mean
; Beschreibung...: Gibt das Mittel einer Zahl zurück
; Syntax.........: _MathEx_Mean($aNumbers[, $modus=3])
; Parameter......: $aNumbers - Ein 0-basiertes Array mit allen Zahlen
; $modus - Welches Mittel verwendet werden soll (nach größe (HM <= GM <= AM <= QM))
; |1: harmonisches Mittel; 2: geometrisches Mittel; 3 (Standart): arithmetisches Mittel;
; |4: quadratisches Mittel
; Rückgaben......: Erfolg - Das jeweilige Mittel
; Fehler - Gibt False zurück und setzt @error:
; |1: $aNumbers ist kein Array oder $modus ist ungültig
; |2: Min. ein Arrayelement ist keine Zahl, in @extended steht die ID des jeweiligen
; Autor(en)......: Stilgar <Stilgar at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Mean($aNumbers, $mode = 3)
If Not IsArray($aNumbers) Or Not IsInt($mode) Or $mode < 1 Or $mode > 4 Then
SetError(1)
Return False
EndIf
For $i = 0 To UBound($aNumbers) - 1
If Not _MathEx_IsNumber($aNumbers[$i]) Then
SetError(2, $i)
Return False
EndIf
Next
Local $integer_mathex_ubound = UBound($aNumbers), $number_mathex_temp = 0
Switch $mode
Case 1 ; harmonisches Mittel
For $i = 0 To $integer_mathex_ubound - 1
$number_mathex_temp += 1 / $aNumbers[$i]
Next
$number_mathex_temp = $integer_mathex_ubound / $number_mathex_temp
Case 2 ; geometrisches Mittel
$number_mathex_temp = 1
For $i = 0 To $integer_mathex_ubound - 1
$number_mathex_temp = $number_mathex_temp * $aNumbers[$i]
Next
$number_mathex_temp = _MathEx_Sqrt($number_mathex_temp, $integer_mathex_ubound)
If @error Then SetError(4, 0, "")
Case 3 ; arithmetisches Mittel
For $i = 0 To $integer_mathex_ubound - 1
$number_mathex_temp += $aNumbers[$i]
Next
$number_mathex_temp = $number_mathex_temp / $integer_mathex_ubound
Case 4 ; quadratisches Mittel
For $i = 0 To $integer_mathex_ubound - 1
$number_mathex_temp += $aNumbers[$i] ^ 2
Next
$number_mathex_temp = Sqrt($number_mathex_temp / 2)
EndSwitch
Return $number_mathex_temp
EndFunc ;==>_MathEx_Mean
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Log
; Beschreibung...: Gibt den Logarithmus einer Zahl zurück
; Syntax.........: _MathEx_Log($nbasis, $nlog)
; Parameter......: $nbasis - Die Basis
; $nlog - Die Zahl
; Rückgaben......: Erfolg - Der Logarithmus zur Basis $nbasis von $nlog
; Fehler - Gibt False zurück, wenn eine der beiden Nummern keine Zahl ist.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Log($nbasis, $nlog)
If Not _MathEx_IsNumber($nbasis) Or Not _MathEx_IsNumber($nlog) Then Return False
Return Log($nlog) / Log($nbasis)
EndFunc ;==>_MathEx_Log
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_IsEven
; Beschreibung...: Prüft, ob eine Zahl gerade ist
; Syntax.........: _MathEx_IsEven($number)
; Parameter......: $number - Die Nummer, die geprüft werden soll
; Rückgaben......: Erfolg - Gibt 1 zurück, wenn die Zahl gerade ist und 0, wenn nicht
; Fehler - Gibt -1 zurück, wenn $number keine Nummer ist
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_IsEven($number)
If Not _MathEx_IsNumber($number) Then Return -1
If Mod($number, 2) = 0 Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_MathEx_IsEven
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_PQ
; Beschreibung...: Errechnet aus den Variablen p und q die quadratische Ergänzung
; Syntax.........: _MathEx_PQ($p, $q)
; Parameter......: $p - p
; $q - q
; Rückgaben......: Erfolg - Ein Array, dessen beide Elemente die Lösungen enthalten
; Fehler - False, falls die Wurzel negativ werden würde oder p bzw. q keine Zahlen sind
; Autor(en)......: Deepred <Deepred at autoit dot de>, L3viathan2142 <L3viathan2142 at autoit dot de>,
; Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_PQ($p, $q)
If Not _MathEx_IsNumber($p) Or Not _MathEx_IsNumber($q) Then Return False
Local $number_mathex_sqrt = $p ^ 2 / 4 - $q, $number_mathex_other = $p / - 2
If $number_mathex_sqrt < 0 Then Return False
$number_mathex_sqrt = Sqrt($number_mathex_sqrt)
Local $return_array[2] = [$number_mathex_other + $number_mathex_sqrt, $number_mathex_other - $number_mathex_sqrt]
Return $return_array
EndFunc ;==>_MathEx_PQ
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_StandardDeviation
; Beschreibung...: Gibt die Standardabweichung übergebener Zahlen an
; Syntax.........: _MathEx_StandardDeviation($aNumbers)
; Parameter......: $aNumbers - Ein 0-basiertes Array mit allen Zahlen
; Rückgaben......: Erfolg - Die Standardabweichung
; Fehler - Gibt False zurück und setzt @error:
; |1: $aNumbers ist kein Array
; |2: Min. ein Arrayelement ist keine Zahl, in @extended steht die ID des jeweiligen
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_StandardDeviation($aNumbers)
If Not IsArray($aNumbers) Then
SetError(1)
Return False
EndIf
Local $integer_mathex_ubound = UBound($aNumbers), $number_mathex_temp = 0, $number_mathex_mittel = _MathEx_Mean($aNumbers)
For $i = 0 To $integer_mathex_ubound - 1
If Not _MathEx_IsNumber($aNumbers[$i]) Then
SetError(2, $i)
Return False
EndIf
$number_mathex_temp += ($aNumbers[$i] - $number_mathex_mittel) ^ 2
Next
Return Sqrt($number_mathex_temp / ($integer_mathex_ubound - 1))
EndFunc ;==>_MathEx_StandardDeviation
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_GGT
; Beschreibung...: Gibt den größten gemeinsamen Teiler von 2 Zahlen an (nach euklidischem Algorithmus)
; Syntax.........: _MathEx_GGT($numbera, $numberb)
; Parameter......: $numbera, $numberb - Zwei beliebige Zahlen
; Rückgabe.......: Erfolg - Gibt einen Integer zurück
; Fehler - Gibt False zurück, wenn es sich nicht um Zahlen handelt
; Autor(en)......: Niko H. <ChaosKeks at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_GGT($numbera, $numberb)
If Not _MathEx_IsNumber($numbera) Or Not _MathEx_IsNumber($numberb) Then Return False
If $numbera = 0 Or $numberb = 0 Then Return 1
Local $number_mathex_rest1 = $numbera, $number_mathex_rest2 = $numberb, $number_mathex_temp
Do
$number_mathex_temp = Mod($number_mathex_rest1, $number_mathex_rest2)
$number_mathex_rest1 = $number_mathex_rest2
$number_mathex_rest2 = $number_mathex_temp
Until $number_mathex_temp = 0
Return $number_mathex_rest1
EndFunc ;==>_MathEx_GGT
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_KGV
; Beschreibung...: Gibt das kleinste gemeinsame Vielfache von 2 Zahlen an
; Syntax.........: _MathEx_kgV($numbera, $numberb)
; Parameter......: $numbera, $numberb - Zwei beliebige Zahlen
; Rückgabe.......: Erfolg - Gibt einen Integer zurück
; Fehler - Gibt False zurück, wenn es sich nicht um Zahlen handelt
; Autor(en)......: Niko H. <ChaosKeks at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_KGV($numbera, $numberb)
Local $number_mathex_ggt = _MathEx_GGT($numbera, $numberb)
If $number_mathex_ggt = False Then Return False
Return $numbera * $numberb / $number_mathex_ggt
EndFunc ;==>_MathEx_KGV
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Factorial
; Beschreibung...: Gibt eine beliebige Fakultät zurück
; Syntax.........: _MathEx_Factorial($number[, $mode = 0])
; Parameter......: $number - Eine beliebige natürliche Zahl
; $mode - Die gewünschte Fakultät:
; |0: Normale Fakultät
; |1: Primfakultät
; |2: Superfakultät (Vorsicht! Rekursiver Aufruf!)
; |3: Hyperfakultät
; Rückgabe.......: Erfolg - Gibt einen Integer zurück
; Fehler - Gibt False zurück, wenn $number oder $mode ungültig war
; Autor(en)......: Niko H. <ChaosKeks at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Factorial($number, $mode = 0)
If Not _MathEx_IsNumber($number) Or $number < 1 Or $mode < 0 Or $mode > 3 Or Not IsInt($mode) Then Return False
Local $number_mathex_temp = 1
Switch $mode
Case 0
For $i = 1 To $number
$number_mathex_temp *= $i
Next
Case 1
If $number = 1 Then Return 0
For $i = 2 To $number
If _MathEx_IsPrime($i) Then $number_mathex_temp *= $i
Next
Case 2
For $i = 1 To $number
$number_mathex_temp *= _MathEx_Factorial($i)
Next
Case 3
For $i = 1 To $number
$number_mathex_temp *= $i ^ $i
Next
EndSwitch
Return $number_mathex_temp
EndFunc ;==>_MathEx_Factorial
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Eul
; Beschreibung...: Gibt die eulersche Zahl nach einer vorgegebenen Genauigkeit an
; Syntax.........: _MathEx_Eul([$accuracy = 65])
; Parameter......: $accuracy - Die Genauigkeit (Zahl sollte einschließlich zwischen 1 und 65 liegen)
; Rückgabe.......: Erfolg - Gibt die eurlersche Zahl zurück
; Fehler - Gibt -1 zurück, wenn $accuracy ungültig war
; Autor(en)......: Niko H. <ChaosKeks at autoit dot de>, Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Eul($accuracy = 65)
Local $number_mathex_eul = 1
If Not IsInt($accuracy) Then Return -1
If $accuracy < 1 Then $accuracy = 1
If $accuracy > 65 Then $accuracy = 65
For $i = 1 To $accuracy
$number_mathex_eul += 1 / _MathEx_Factorial($i)
Next
Return $number_mathex_eul
EndFunc ;==>_MathEx_Eul
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Point_Distance
; Beschreibung...: Ermittelt den Abstand zwischen zwei Punkten
; Syntax.........: _MathEx_Point_Distance($x1, $y1, $x2, $y2)
; Parameter......: $x1, $y1, $x2, $y2 - Die Koordinaten der Punkte
; Rückgabe.......: Erfolg - Gibt den Abstand zurück
; Fehler - Gibt -1 zurück, eine der Koordinaten ungültig war
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Point_Distance($x1, $y1, $x2, $y2)
If Not _MathEx_IsNumber($x1) Or Not _MathEx_IsNumber($y1) Or Not _MathEx_IsNumber($x2) Or Not _MathEx_IsNumber($y2) Then Return -1
Return Sqrt(($x1 - $x2) ^ 2 + ($y1 - $y2) ^ 2)
EndFunc ;==>_MathEx_Point_Distance
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Point_InRectangle
; Beschreibung...: Ermittelt den Abstand zwischen zwei Punkten
; Syntax.........: _MathEx_Point_InRectangle($P1, $P2, $X)
; Parameter......: $P1, $P2 - Arrays mit den Koordinaten des linken oberen Punktes ($P1) und des rechten unteren ($P2)
; $X - Koordinaten des zu prüfenden Punkts
; => [0] enthält die x-Koordinate und [1] die y-Koordinate der entsprechenden Punkte
; Rückgabe.......: Erfolg - Gibt 1 zurück, wenn sich der Punkt im, 0 wenn er sich auf dem Rand und -1 wenn er sich außerhalb
; befindet
; Fehler - Gibt False zurück, wenn eine der Koordinaten ungültig war.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Point_InRectangle($P1, $P2, $X)
If Not IsArray($P1) Or Not IsArray($P2) Or Not IsArray($X) Then Return False
If Not _MathEx_IsNumber($P1[0]) Or Not _MathEx_IsNumber($P1[1]) Or Not _MathEx_IsNumber($P2[0]) Or Not _MathEx_IsNumber($P2[1]) Then Return False
If Not _MathEx_IsNumber($X[0]) Or Not _MathEx_IsNumber($X[1]) Then Return False
If $P1[0] > $P2[0] Or $P1[1] < $P2[1] Then Return False
Select
Case $X[0] > $P1[0] And $X[0] < $P2[0] And $X[1] < $P1[1] And $X[1] > $P2[1]
Return 1
Case $X[0] = $P1[0] And $X[1] <= $P1[1] And $X[1] >= $P2[1]
Return 0
Case $X[0] = $P2[0] And $X[1] <= $P1[1] And $X[1] >= $P2[1]
Return 0
Case $X[1] = $P1[1] And $X[0] >= $P1[0] And $X[0] <= $P2[0]
Return 0
Case $X[1] = $P2[1] And $X[0] >= $P1[0] And $X[0] <= $P2[0]
Return 0
Case Else
Return -1
EndSelect
EndFunc ;==>_MathEx_Point_InRectangle
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_GraphInfo
; Beschreibung...: Liefert Steigung und y-Achsenabschnitt eines Graphen zurück
; Syntax.........: _MathEx_GraphInfo($P1, $P2)
; Parameter......: $P1, $P2 - Arrays mit den Koordinaten zweier Punkte, die auf der Geraden liegen. $P2 muss einen größeren
; x-Wert als $P1 haben!
; => [0] enthält die x-Koordinate und [1] die y-Koordinate der entsprechenden Punkte
; Rückgabe.......: Erfolg - Gibt ein Array zurück, dass folgende Elemente enthält:
; | [0] - Steigung
; | [1] - y-Achsenabschnitt
; Fehler - Gibt False zurück, wenn eine der Koordinaten ungültig war.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_GraphInfo($P1, $P2)
If Not IsArray($P1) Or Not IsArray($P2) Then Return False
If Not _MathEx_IsNumber($P1[0]) Or Not _MathEx_IsNumber($P1[1]) Or Not _MathEx_IsNumber($P2[0]) Or Not _MathEx_IsNumber($P2[1]) Then Return False
If Not $P2[0] > $P1[0] Then Return False
Local $array_mathex_return[2]
$array_mathex_return[0] = ($P2[1] - $P1[1]) / ($P2[0] - $P1[0])
$array_mathex_return[1] = $P1[1] - ($array_mathex_return[0] * $P1[0])
Return $array_mathex_return
EndFunc ;==>_MathEx_GraphInfo
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Point_OnLine
; Beschreibung...: Prüft, ob sich ein Punkt auf einer geraden befindet.
; Syntax.........: _MathEx_Point_OnLine($P1, $P2, $X)
; Parameter......: $P1, $P2 - Arrays mit den Koordinaten zweier auf der Geraden liegenden Punkte. $P2 muss einen größeren
; x-Wert als $P1 haben!
; $X - Koordinaten des zu prüfenden Punkts
; => [0] enthält die x-Koordinate und [1] die y-Koordinate der entsprechenden Punkte
; Rückgabe.......: Erfolg - Gibt 1 zurück, wenn sich der Punkt "über" der Geraden befindet, 0 wenn er sich auf der Geraden
; befindet und -1 wenn er sich "unter" der geraden befindet
; Fehler - Gibt False zurück, wenn eine der Koordinaten ungültig war.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Point_OnLine($P1, $P2, $X)
If Not IsArray($X) Then Return False
Local $array_mathex_graphinfo = _MathEx_GraphInfo($P1, $P2)
If $array_mathex_graphinfo == False Then Return False
Local $number_mathex_term = $array_mathex_graphinfo[0] * $X[0] + $array_mathex_graphinfo[1]
If $X[1] < $number_mathex_term Then
Return -1
ElseIf $X[1] > $number_mathex_term Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_MathEx_Point_OnLine
; #FUNCTION# ====================================================================================================================
; Name...........: _MathEx_Point_OnSegment
; Beschreibung...: Prüft, ob sich ein Punkt auf einer Strecken befindet
; Syntax.........: _MathEx_Point_OnSegment($P1, $P2, $X)
; Parameter......: $P1, $P2 - Arrays mit den Koordinaten der zwei Endpunkte der Strecke. $P2 muss einen größeren x-Wert als $P1
; haben!
; $X - Koordinaten des zu prüfenden Punkts
; => [0] enthält die x-Koordinate und [1] die y-Koordinate der entsprechenden Punkte
; Rückgabe.......: Erfolg - Gibt 1 zurück, wenn sich der Punkt auf der Strecke befindet, 0 wenn nicht.
; Fehler - Gibt -1 zurück, wenn eine der Koordinaten ungültig war.
; Autor(en)......: Matthias Gianfelice <matthias at gianfelice dot de>
; ===============================================================================================================================
Func _MathEx_Point_OnSegment($P1, $P2, $X)
$number_mathex_online = _MathEx_Point_OnLine($P1, $P2, $X)
If $number_mathex_online == False Then Return -1
If Not $number_mathex_online = 0 Then Return 0
If $X[0] >= $P1[0] And $X[0] <= $P2[0] Then
Return 1
Else
Return 0
EndIf
EndFunc ;==>_MathEx_Point_OnSegment
Beispiel
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=mathex-example.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=Beispiel für die MathEx.au3
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=(c) BugFix, Matthias Gianfelice
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Au3Check_Stop_OnWarning=y
#AutoIt3Wrapper_Run_After=%out%
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#NoTrayIcon
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0 ++
Author: BugFix < BugFix at autoit dot de >,
Author: Matthias Gianfelice < matthias at gianfelice dot de >
Script Function:
Beispiel für die MathEx.au3
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#include "MathEx.au3"
#include <GDIPlus.au3>
If Not @Compiled Then
MsgBox(262160, "Fehler!", "Das Skript muss kompiliert sein um zu funktionieren!" & @CRLF & @CRLF & "Drücke in SciTE bitte F7 anstatt von F5!")
Exit
EndIf
Global $hConsoleOutput, $hConsoleInput, $AllocConsole = DllCall("kernel32", "long", "AllocConsole")
[/autoit] [autoit][/autoit] [autoit]If $AllocConsole[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Öffnen der Konsole!")
Exit
EndIf
$hConsoleOutput = GetStdHandle(-11)
If $hConsoleOutput = -1 Then
MsgBox(262160, "Fehler!", "Fehler beim STDIN-Handle!")
Exit
EndIf
$hConsoleInput = GetStdHandle(-10)
If $hConsoleOutput = -1 Then
MsgBox(262160, "Fehler!", "Fehler beim STDIN-Handle!")
Exit
EndIf
Global $AllocConsole = DllCall("kernel32", "long", "SetConsoleTitleA", "str", "MathEx.au3 - Beispiel")
If $AllocConsole[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Setzen des Titels!")
Exit
EndIf
SetConsoleTextAttribute(0x10 + 0x20)
WriteConsole(" " & @CRLF)
WriteConsole(" *********************************************************** " & @CRLF)
WriteConsole(" * * " & @CRLF)
WriteConsole(" * MathEx.au3 - Beispiel * " & @CRLF)
WriteConsole(" * * " & @CRLF)
WriteConsole(" * (c) Matthias Gianfelice, 2009 * " & @CRLF)
WriteConsole(" * * " & @CRLF)
WriteConsole(" * Console.au3: BugFix < BugFix at autoit dot de > * " & @CRLF)
WriteConsole(" * Danke an: BugFix, eukalyptus, Progandy, Depreed, * " & @CRLF)
WriteConsole(" * AutoBert, Stilgar, L3viathan2142, Niko H. * " & @CRLF)
WriteConsole(" * * " & @CRLF)
WriteConsole(" * ... und die ganze deutsche Community!!! * " & @CRLF)
WriteConsole(" * * " & @CRLF)
WriteConsole(" *********************************************************** " & @CRLF)
WriteConsole(" " & @CRLF)
WriteConsole(" " & @CRLF)
Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]SetConsoleTextAttribute(0x0 + 0x4)
WriteConsole(@CRLF & " Druecke ENTER" & @CRLF)
ConsoleReadLine()
[/autoit] [autoit][/autoit] [autoit]ShowPage(1)
[/autoit] [autoit][/autoit] [autoit]Func ShowPage($page)
DllCall("kernel32", "long", "CloseHandle", "long", $hConsoleOutput)
DllCall("kernel32", "long", "CloseHandle", "long", $hConsoleInput)
DllCall("kernel32", "long", "FreeConsole")
$AllocConsole = DllCall("kernel32", "long", "AllocConsole")
If $AllocConsole[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Öffnen der Konsole!")
Exit
EndIf
$hConsoleOutput = GetStdHandle(-11)
If $hConsoleOutput = -1 Then
MsgBox(262160, "Fehler!", "Fehler beim STDIN-Handle!")
Exit
EndIf
$hConsoleInput = GetStdHandle(-10)
If $hConsoleOutput = -1 Then
MsgBox(262160, "Fehler!", "Fehler beim STDIN-Handle!")
Exit
EndIf
Global $AllocConsole = DllCall("kernel32", "long", "SetConsoleTitleA", "str", "MathEx.au3 - Beispiel")
If $AllocConsole[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Setzen des Titels!")
Exit
EndIf
WinWait("MathEx.au3 - Beispiel")
WinMove("MathEx.au3 - Beispiel", "", 0, 0)
SetConsoleTextAttribute(0x2 + 0x4 + 0x10 + 0x8)
WriteConsole("MathEx.au3 - Beispiel - Seite " & $page & ": Bitte waehle eine zu testende Funktion aus: " & @CRLF)
WriteConsole(" " & @CRLF & @CRLF)
Switch $page
Case 1
SetConsoleTextAttribute(0x0 + 0x4 + 0x2 + 0x8)
WriteConsole(" (1) _MathEx_Checksum" & @CRLF)
WriteConsole(" (2) _MathEx_IsDivisible" & @CRLF)
WriteConsole(" (3) _MathEx_IsPrime" & @CRLF)
WriteConsole(" (4) _MathEx_Pi" & @CRLF)
WriteConsole(" (5) _MathEx_Max" & @CRLF)
WriteConsole(" (6) _MathEx_Min" & @CRLF)
WriteConsole(" (7) _MathEx_CreatePrimes" & @CRLF)
WriteConsole(" (8) _MathEx_IsNumber" & @CRLF)
WriteConsole(" (9) _MathEx_Sqrt" & @CRLF)
WriteConsole(" (0) _MathEx_Mean" & @CRLF)
Case 2
SetConsoleTextAttribute(0x0 + 0x4 + 0x2 + 0x8)
WriteConsole(" (1) _MathEx_Log" & @CRLF)
WriteConsole(" (2) _MathEx_IsEven" & @CRLF)
WriteConsole(" (3) _MathEx_PQ" & @CRLF)
WriteConsole(" (4) _MathEx_StandardDeviation" & @CRLF)
WriteConsole(" (5) _MathEx_GGT" & @CRLF)
WriteConsole(" (6) _MathEx_KGV" & @CRLF)
WriteConsole(" (7) _MathEx_Factorial" & @CRLF)
WriteConsole(" (8) _MathEx_Eul" & @CRLF)
WriteConsole(" (9) _MathEx_Point_Distance" & @CRLF)
WriteConsole(" (0) _MathEx_Point_InRectangle" & @CRLF)
Case 3
SetConsoleTextAttribute(0x0 + 0x4 + 0x2 + 0x8)
WriteConsole(" (1) _MathEx_GraphInfo" & @CRLF)
WriteConsole(" (2) _MathEx_Point_OnLine" & @CRLF)
WriteConsole(" (3) _MathEx_Point_OnSegment" & @CRLF)
WriteConsole(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF)
EndSwitch
SetConsoleTextAttribute(0x2 + 0x4 + 0x10 + 0x8)
WriteConsole(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & " " & @CRLF)
If $page < 3 Then
WriteConsole("(W) - Weiter")
Else
WriteConsole(" ")
EndIf
WriteConsole(" ")
If $page > 1 Then
WriteConsole("(Z) - Zurueck")
Else
WriteConsole(" ")
EndIf
WriteConsole(" (X) - Beenden " & @CRLF)
WriteConsole(" " & @CRLF)
SetConsoleTextAttribute(0x0 + 0x4 + 0x2 + 0x8)
WriteConsole(@CRLF & "Deine Auswahl: ")
$eingabe = ConsoleReadLine()
If $eingabe = "10" Then
SetConsoleTextAttribute(0x40 + 0x4 + 0x2 + 0x8)
WriteConsole(@CRLF & @CRLF & "Ungueltige Eingabe! Druecke ENTER um zurueck zu gelangen! ")
ConsoleReadLine()
Return ShowPage($page)
EndIf
If $eingabe = "0" Then $eingabe = "10"
If Number($eingabe) > 0 And Number($eingabe) < 11 Then
ShowExample(Number($eingabe) + (10 * ($page - 1)))
EndIf
If $page < 3 Then
If $eingabe = "W" Or $eingabe = "w" Then Return ShowPage($page + 1)
EndIf
If $page > 1 Then
If $eingabe = "Z" Or $eingabe = "z" Then Return ShowPage($page - 1)
EndIf
If $eingabe = "X" Or $eingabe = "x" Then Exit
SetConsoleTextAttribute(0x40 + 0x4 + 0x2 + 0x8)
WriteConsole(@CRLF & @CRLF & "Ungueltige Eingabe! Druecke ENTER um zurueck zu gelangen! ")
ConsoleReadLine()
Return ShowPage($page)
EndFunc ;==>ShowPage
Func ShowExample($function)
WriteConsole(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF)
SetConsoleTextAttribute(0x2 + 0x4 + 0x10 + 0x8)
WriteConsole("MathEx.au3 - Beispiel - Funktionsinfos: " & @CRLF)
WriteConsole(" " & @CRLF)
SetConsoleTextAttribute(0x20 + 0x2 + 0x4 + 0x8)
Switch $function
Case 1
WriteConsole("Funktion: _MathEx_Checksum " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe eine Zahl ein, aus der verschiedene Quersummen gebildet werden" & @CRLF & "sollen: ")
$zahl = ConsoleReadLine()
WriteConsole("Normale Quersumme......: " & _MathEx_Checksum(Number($zahl)) & @CRLF)
WriteConsole("Iterative Quersumme....: " & _MathEx_Checksum(Number($zahl), 1) & @CRLF)
WriteConsole("Alternative Quersumme..: " & _MathEx_Checksum(Number($zahl), 2) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 2
WriteConsole("Funktion: _MathEx_IsDivisible " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe zuerst einen Dividenden ein: ")
Local $zahl1 = ConsoleReadLine()
WriteConsole(" Gebe nun einen Divisor ein......: ")
Local $zahl2 = ConsoleReadLine()
If _MathEx_IsDivisible($zahl1, $zahl2) Then
WriteConsole(@CRLF & "Die Zahl " & $zahl1 & " ist durch " & $zahl2 & " teilbar!")
Else
WriteConsole(@CRLF & "Die Zahl " & $zahl1 & "ist ")
SetConsoleTextAttribute(0x40 + 0x2 + 0x4 + 0x8)
WriteConsole("NICHT")
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole(" durch " & $zahl2 & " teilbar!")
EndIf
WriteConsole(@CRLF & @CRLF & "Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 3
WriteConsole("Funktion: _MathEx_IsPrime " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Primzahlspirale von Ulam. Alle Zahlen werden spiralförmig angeordnet und blau hinterlegt. Primzahlen werden gelb hervorgehoben. Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(1)
EndIf
Global $grenze = InputBox("Primzahlspirale von Ulam", "Bitte geben Sie den Spalten- bzw. Reihen-Wert ein (ungerade Zahl):" & @CRLF & @CRLF & "(Achtung! Ab ca. 100 sehr Ressourcenlastig!)", "", " M", "-1", "-1", "-1", "-1")
If @error Then Return ShowPage(1)
If _MathEx_IsEven($grenze) Then $grenze -= 1
Local $aNumbers[$grenze][$grenze], $Schritt = ($grenze - 1) / 2
$progress_gui = GUICreate("", 500, 50, -1, -1, 0x80000000, 128)
GUISetBkColor(0xFFFFFF)
$progress_1 = GUICtrlCreateProgress(0, 0, 500, 35)
$progress_2 = GUICtrlCreateLabel("Ordne Zahlen an... (1/2)", 0, 35, 500, 15)
GUISetState()
For $n = 0 To $Schritt
$aNumbers[$Schritt - $n][$Schritt - $n] = 4 * $n ^ 2 + 1
$aNumbers[$Schritt - $n][$Schritt + $n] = 4 * $n ^ 2 - 2 * $n + 1
$aNumbers[$Schritt + $n][$Schritt - $n] = 4 * $n ^ 2 + 2 * $n + 1
$aNumbers[$Schritt + $n][$Schritt + $n] = 4 * $n ^ 2 + 4 * $n + 1
If $n Then
For $i = 1 To $n * 2 - 1
$aNumbers[$Schritt - $n + $i][$Schritt - $n] = $aNumbers[$Schritt - $n][$Schritt - $n] + $i
$aNumbers[$Schritt - $n + $i][$Schritt + $n] = $aNumbers[$Schritt - $n][$Schritt + $n] - $i
$aNumbers[$Schritt + $n][$Schritt - $n + $i] = $aNumbers[$Schritt + $n][$Schritt - $n] + $i
$aNumbers[$Schritt - $n][$Schritt - $n + $i] = $aNumbers[$Schritt - $n][$Schritt - $n] - $i
Next
EndIf
GUICtrlSetData($progress_1, 100 / $Schritt * $n)
Next
GUICtrlSetData($progress_1, 0)
GUICtrlSetData($progress_2, "Berechne Primzahlen... (2/2)")
If MsgBox(262436, "Primzahlspirale von Ulam", "Soll die große GUI angezeigt werden?") = 6 Then
$Form1 = GUICreate("Primzahlspirale von Ulam", $grenze * 50, $grenze * 20)
For $x = 0 To $grenze - 1
For $y = 0 To $grenze - 1
GUICtrlCreateLabel($aNumbers[$x][$y], 50 * $x, 20 * $y, 50, 20, 0x01)
GUICtrlSetColor(-1, 0xFFFFFF)
If _MathEx_IsPrime($aNumbers[$x][$y]) Then
GUICtrlSetBkColor(-1, 0xFFFF00)
Else
GUICtrlSetBkColor(-1, 0x0000FF)
EndIf
Next
GUICtrlSetData($progress_1, 100 / $Schritt * $x)
Next
Sleep(500)
GUIDelete($progress_gui)
GUISetState(@SW_SHOW, $Form1)
Do
Sleep(10)
Until GUIGetMsg() = -3
GUIDelete($Form1)
EndIf
GUIDelete($progress_gui)
$gui = GUICreate("Primzahlspirale von Ulam", $grenze, $grenze, -1, -1, -1, 128)
$hwnd = WinGetHandle("Primzahlspirale von Ulam")
GUISetState()
_GDIPlus_Startup()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hwnd)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF)
$hBrush2 = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
_GDIPlus_GraphicsFillRect($hGraphic, 0, 0, $grenze, $grenze, $hBrush)
_GDIPlus_BrushDispose($hBrush)
For $x = 0 To $grenze - 1
For $y = 0 To $grenze - 1
If _MathEx_IsPrime($aNumbers[$x][$y]) Then
_GDIPlus_GraphicsFillRect($hGraphic, $x, $y, 1, 1, $hBrush2)
EndIf
Next
Next
_GDIPlus_BrushDispose($hBrush2)
Do
Sleep(10)
Until GUIGetMsg() = -3
GUIDelete($gui)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Return ShowPage(1)
Case 4
WriteConsole("Funktion: _MathEx_Pi " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Pi lautet: " & _MathEx_Pi() & @CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 5
WriteConsole("Funktion: _MathEx_Max " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte ein paar Zahlen mit einem Komma getrennt an (z.B. '5,10,4,7.6'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("Groesste Zahl: " & _MathEx_Max($zahlen) & @CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 6
WriteConsole("Funktion: _MathEx_Min " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte ein paar Zahlen mit einem Komma getrennt an (z.B. '5,10,4,7.6'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("Kleinste Zahl: " & _MathEx_Min($zahlen) & @CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 7
WriteConsole("Funktion: _MathEx_CreatePrimes " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Alle Primzahlen zwischen 0 und 1000: " & @CRLF)
$primzahlen = _MathEx_CreatePrimes(1000)
For $i = 1 To $primzahlen[0]
WriteConsole($primzahlen[$i])
For $j = 0 To (3 - StringLen($primzahlen[$i]))
WriteConsole(" ")
Next
If $i <> $primzahlen[0] Then
WriteConsole(", ")
If Mod($i, 10) = 0 Then WriteConsole(@CRLF)
EndIf
Next
WriteConsole(@CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 8
WriteConsole("Funktion: _MathEx_IsNumber " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte eine Zeichenkette an, die Funktion meldet, ob es sich um eine Zahl handelt: ")
If _MathEx_IsNumber(ConsoleReadLine()) Then
WriteConsole("Es handelt sich um eine Zahl!")
Else
WriteConsole("Es handelt sich um ")
SetConsoleTextAttribute(0x40 + 0x2 + 0x4 + 0x8)
WriteConsole("KEINE")
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole(" Zahl!")
EndIf
WriteConsole(@CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 9
WriteConsole("Funktion: _MathEx_Sqrt " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte eine Zahl unter der Wurzel an................: ")
$zahl1 = ConsoleReadLine()
WriteConsole(" Gebe bitte an, die wievielte Wurzel gebildet werden soll: ")
$zahl2 = ConsoleReadLine()
If $zahl1 < 0 Then
WriteConsole(" !!! DIE WURZEL IST NEGATIV !!!")
Else
WriteConsole(" Die " & $zahl2 & ". Wurzel aus " & $zahl1 & " lautet")
For $i = 0 To 31 - StringLen($zahl1) - StringLen($zahl2)
WriteConsole(".")
Next
WriteConsole(": " & _MathEx_Sqrt($zahl1, $zahl2))
EndIf
WriteConsole(@CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 10
WriteConsole("Funktion: _MathEx_Mean " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe eine Zeichenkette von Zahlen ein, aus der verschiedene Mittel" & @CRLF & "errechnet werden sollen. Trenne diese mit einem Komma" & @CRLF & "(z.B. '5,6,7,3'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("Harmonisches Mittel............: " & _MathEx_Mean($zahlen, 1) & @CRLF)
WriteConsole("Geometrisches Mittel...........: " & _MathEx_Mean($zahlen, 2) & @CRLF)
WriteConsole("Arithmetisches Mittel (Stadart): " & _MathEx_Mean($zahlen) & @CRLF)
WriteConsole("Quadratisches Mittel...........: " & _MathEx_Mean($zahlen, 4) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 11
WriteConsole("Funktion: _MathEx_Log " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte eine Basis an..: ")
$zahl1 = ConsoleReadLine()
WriteConsole(" Gebe bitte die Zahl an....: ")
$zahl2 = ConsoleReadLine()
WriteConsole(" Der Logaritmus lautet.....: " & _MathEx_Log($zahl1, $zahl2))
WriteConsole(@CRLF & @CRLF & "Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 12
WriteConsole("Funktion: _MathEx_IsEven " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte eine Zahl an. Die Funktion meldet, ob es sich um eine gerade Zahl handelt: ")
If _MathEx_IsEven(ConsoleReadLine()) Then
WriteConsole("Es handelt sich um eine gerade Zahl!")
Else
WriteConsole("Es handelt sich ")
SetConsoleTextAttribute(0x40 + 0x2 + 0x4 + 0x8)
WriteConsole("NICHT")
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole(" um eine gerade Zahl!")
EndIf
WriteConsole(@CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 13
WriteConsole("Funktion: _MathEx_PQ " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe bitte ein p an..: ")
$zahl1 = ConsoleReadLine()
WriteConsole(" Gebe bitte ein q an..: ")
$zahl2 = ConsoleReadLine()
$temp = _MathEx_PQ($zahl1, $zahl2)
WriteConsole(" x1 lautet............: " & $temp[0] & @CRLF & " x2 lautet............: " & $temp[1])
WriteConsole(@CRLF & @CRLF & "Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 14
WriteConsole("Funktion: _MathEx_StandardDeviation " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe eine Zeichenkette von Zahlen ein, aus der die Standard-" & @CRLF & "abweichung errechnet werden soll. Trenne diese mit einem Komma" & @CRLF & "(z.B. '5,6,7,3'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("Standardabweichung: " & _MathEx_StandardDeviation($zahlen) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 15
WriteConsole("Funktion: _MathEx_GGT " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe zwei Zahlen an, aus denen der groesste gemeinsame Teiler" & @CRLF & "errechnet werden soll. Trenne diese mit einem Komma" & @CRLF & "(z.B. '5,6'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("ggT: " & _MathEx_GGT($zahlen[0], $zahlen[1]) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 16
WriteConsole("Funktion: _MathEx_KGV " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe zwei Zahlen an, aus denen das kleinste gemeinsame" & @CRLF & "Vielfache errechnet werden soll. Trenne diese mit einem Komma" & @CRLF & "(z.B. '5,6'): ")
$zahlen = StringSplit(ConsoleReadLine(), ",", 2)
WriteConsole("kgV: " & _MathEx_KGV($zahlen[0], $zahlen[1]) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 17
WriteConsole("Funktion: _MathEx_Factorial " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Gebe eine Zahl ein, aus der verschiedene Fakultaeten errechnet werden" & @CRLF & "sollen!" & @CRLF)
WriteConsole("Deine Zahl........: ")
$zahl = ConsoleReadLine()
WriteConsole("Normale Fakultaet.: " & _MathEx_Factorial($zahl) & @CRLF)
WriteConsole("Primfakultaet.....: " & _MathEx_Factorial($zahl, 1) & @CRLF)
WriteConsole("Superfakultaet....: " & _MathEx_Factorial($zahl, 2) & @CRLF)
WriteConsole("Hyperfakultaelt...: " & _MathEx_Factorial($zahl, 3) & @CRLF & @CRLF)
WriteConsole("Druecke ENTER, um ins Hauptmenue zurueck zu gelangen.")
Case 18
WriteConsole("Funktion: _MathEx_Eul " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Die eulersche Zahl lautet relativ genau: " & _MathEx_Eul() & @CRLF & @CRLF & "Druecke ENTER um ins Hauptmenue zurueck zu gelangen")
Case 19
WriteConsole("Funktion: _MathEx_Point_Distance " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(2)
EndIf
Opt("MouseCoordMode", 2)
$Form1 = GUICreate("Form1", 101, 101, -1, -1)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("", 50, 50, 1, 1)
GUICtrlSetBkColor($Label1, 0xFF0000)
GUISetState()
While 1
$test1 = MouseGetPos()
$test = _MathEx_Point_Distance(50, -50, $test1[0], $test1[1] * - 1)
ToolTip($test1[0] & ":" & $test1[1] & "| Abstand: " & $test & "px")
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
GUIDelete($Form1)
Return ShowPage(2)
EndSwitch
Sleep(10)
WEnd
Case 20
WriteConsole("Funktion: _MathEx_InRectangle " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(2)
EndIf
Opt("MouseCoordMode", 2)
$Form1 = GUICreate("Form1", 151, 151, 192, 124)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("", 50, 50, 50, 50)
GUICtrlSetBkColor($Label1, 0xFF0000)
GUISetState()
Global $Punkt1[2] = [50, -50], $Punkt2[2] = [100, -100]
While 1
$test1 = MouseGetPos()
$test1[1] *= -1
$test = _MathEx_Point_InRectangle($Punkt1, $Punkt2, $test1)
If $test == False Then Exit
ToolTip($test1[0] & ":" & $test1[1] & "|" & $test)
Switch $test
Case 1
GUICtrlSetBkColor($Label1, 0x0000FF)
Case 0
GUICtrlSetBkColor($Label1, 0x00FF00)
Case Else
GUICtrlSetBkColor($Label1, 0xFF0000)
EndSwitch
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
GUIDelete($Form1)
Return ShowPage(2)
EndSwitch
Sleep(10)
WEnd
Case 21
WriteConsole("Funktion: _MathEx_GraphInfo " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(3)
EndIf
Opt("MouseCoordMode", 2)
$Form1 = GUICreate("Form1", 101, 101, -1, -1)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("", 50, 50, 1, 1)
GUICtrlSetBkColor($Label1, 0xFF0000)
GUISetState()
Local $Point[2] = [50, -50]
While 1
$test1 = MouseGetPos()
$test1[1] *= -1
$test = _MathEx_GraphInfo($Point, $test1)
ToolTip("Funktion: f(x)=" & $test[0] & "*x+" & $test[1])
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
GUIDelete($Form1)
Return ShowPage(3)
EndSwitch
Sleep(10)
WEnd
Case 22
WriteConsole("Funktion: _MathEx_Point_OnLine " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(3)
EndIf
Opt("MouseCoordMode", 2)
$Form1 = GUICreate("Form1", 150, 150, -1, -1)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("", 0, 50, 150, 1)
GUICtrlSetBkColor($Label1, 0xFF0000)
GUISetState()
Global $Punkt1[2] = [50, -50], $Punkt2[2] = [100, -50]
While 1
$test1 = MouseGetPos()
$test1[1] *= -1
$test = _MathEx_Point_OnLine($Punkt1, $Punkt2, $test1)
If $test == False Then Exit
ToolTip($test1[0] & ":" & $test1[1] & "|" & $test)
Switch $test
Case 1
GUICtrlSetBkColor($Label1, 0x0000FF)
Case 0
GUICtrlSetBkColor($Label1, 0x00FF00)
Case Else
GUICtrlSetBkColor($Label1, 0xFF0000)
EndSwitch
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
GUIDelete($Form1)
Return ShowPage(3)
EndSwitch
Sleep(10)
WEnd
Case 23
WriteConsole("Funktion: _MathEx_Point_OnSegment " & @CRLF & @CRLF)
SetConsoleTextAttribute(0x0 + 0x1 + 0x2 + 0x4)
WriteConsole("Beispiel: Beispiel ist in einer externen GUI. Oeffnen? (J/N - ungueltige Eingabe = N) ")
$eingabe = ConsoleReadLine()
If $eingabe = "j" Or $eingabe = "J" Then
Else
Return ShowPage(3)
EndIf
Opt("MouseCoordMode", 2)
$Form1 = GUICreate("Form1", 200, 200, -1, -1)
GUISetBkColor(0xFFFFFF)
$Label1 = GUICtrlCreateLabel("", 50, 100, 100, 1)
GUICtrlSetBkColor($Label1, 0xFF0000)
GUISetState()
Global $Punkt1[2] = [50, -100], $Punkt2[2] = [150, -100]
[/autoit] [autoit][/autoit] [autoit]While 1
$test1 = MouseGetPos()
$test1[1] *= -1
$test = _MathEx_Point_OnSegment($Punkt1, $Punkt2, $test1)
If $test == False Then Exit
ToolTip($test1[0] & ":" & $test1[1] & "|" & $test)
Switch $test
Case 1
GUICtrlSetBkColor($Label1, 0x00FF00)
Case Else
GUICtrlSetBkColor($Label1, 0xFF0000)
EndSwitch
$nMsg = GUIGetMsg()
Switch $nMsg
Case - 3
GUIDelete($Form1)
Return ShowPage(3)
EndSwitch
Sleep(10)
WEnd
EndSwitch
ConsoleReadLine()
If $function < 11 Then Return ShowPage(1)
If $function < 21 Then Return ShowPage(2)
Return ShowPage(3)
EndFunc ;==>ShowExample
Func OnAutoItExit()
WriteConsole(@CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF & @CRLF)
Sleep(500)
WriteConsole(" MathEx.au3 - Credits: " & @CRLF)
Sleep(100)
WriteConsole(" ===================== " & @CRLF)
Sleep(100)
WriteConsole(" " & @CRLF)
Sleep(100)
WriteConsole(" BugFix........: _MathEx_Checksum " & @CRLF)
Sleep(100)
WriteConsole(" eukalyptus....: _MathEx_IsDivisible " & @CRLF)
Sleep(100)
WriteConsole(" Progandy......: _MathEx_IsPrime, _MathEx_CreatePrimes " & @CRLF)
Sleep(100)
WriteConsole(" Deepred.......: _MathEx_Pi, _MathEx_PQ " & @CRLF)
Sleep(100)
WriteConsole(" AutoBert......: _MathEx_CreatePrimes " & @CRLF)
Sleep(100)
WriteConsole(" Stilgar.......: _MathEx_Pi, _MathEx_Mean " & @CRLF)
Sleep(100)
WriteConsole(" L3viathan2142.: _MathEx_PQ " & @CRLF)
Sleep(100)
WriteConsole(" Niko H........: _MathEx_GGT, _MathEx_KGV, _MathEx_Factorial, _MathEx_Eul " & @CRLF)
Sleep(100)
WriteConsole(" Matthias G....: Funktionssamlung an sich, alle Funktionen " & @CRLF)
Sleep(100)
WriteConsole(" " & @CRLF)
Sleep(100)
WriteConsole(" Command.au3...: BugFix (HERZLICHEN DANK!!!) " & @CRLF)
Sleep(100)
WriteConsole(" " & @CRLF)
Sleep(100)
WriteConsole(" Beispiel......: Matthias Gianfelice " & @CRLF)
Sleep(100)
WriteConsole(" " & @CRLF)
Sleep(100)
WriteConsole("!!! > HERZLICHEN DANK AN DIE GESAMTE DEUTSCHE COMMUNITY FUER DIE HILFE < !!!" & @CRLF)
Sleep(100)
WriteConsole(" " & @CRLF)
Sleep(100)
WriteConsole("Danke fuers Testen, bitte melde Probleme, Bugs oder Wuensche im deutschen Forum" & @CRLF)
Sleep(100)
WriteConsole(@CRLF)
Sleep(100)
WriteConsole(@CRLF)
Sleep(100)
WriteConsole(@CRLF)
Sleep(100)
WriteConsole(@CRLF)
Sleep(100)
WriteConsole("Druecke ENTER zum Beenden")
ConsoleReadLine()
DllCall("kernel32", "long", "CloseHandle", "long", $hConsoleOutput)
DllCall("kernel32", "long", "CloseHandle", "long", $hConsoleInput)
DllCall("kernel32", "long", "FreeConsole")
EndFunc ;==>OnAutoItExit
Func WriteConsole($sText)
Local $lpBuffer = DllStructCreate("char[" & StringLen($sText) & "]"), $lpNumberOfCharsWritten = DllStructCreate('int')
DllStructSetData($lpBuffer, 1, $sText)
Local $ret = DllCall("kernel32", "long", "WriteConsoleA", "long", $hConsoleOutput, "ptr", DllStructGetPtr($lpBuffer), _
"long", StringLen($sText), "ptr", DllStructGetPtr($lpNumberOfCharsWritten), "long", 0)
If $ret[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Schreiben in die Konsole!")
Exit
EndIf
Return $ret[0]
EndFunc ;==>WriteConsole
Func SetConsoleTextAttribute($wAttributes)
Local $ret = DllCall("kernel32", "long", "SetConsoleTextAttribute", "long", $hConsoleOutput, "long", $wAttributes)
If $ret[0] = 0 Then
MsgBox(262160, "Fehler!", "Fehler beim Setzen der Attribute!")
Exit
EndIf
Return 1
EndFunc ;==>SetConsoleTextAttribute
Func GetStdHandle($nStdHandle)
Local $ret = DllCall("kernel32", "long", "GetStdHandle", "long", $nStdHandle)
If $ret[0] = 0 Then Return SetError(1, 0, 0)
Return $ret[0]
EndFunc ;==>GetStdHandle
Func ConsoleReadLine()
Local $ZeroPos, $ConsoleReadLine = ''
For $i = 0 To 79
$ConsoleReadLine &= Chr(0)
Next
$ConsoleReadLine = ReadConsole($hConsoleInput, $ConsoleReadLine)
$ZeroPos = StringInStr($ConsoleReadLine, Chr(0))
If $ZeroPos > 0 Then $ConsoleReadLine = StringLeft($ConsoleReadLine, $ZeroPos - 3)
Local $splitted_string = StringSplit($ConsoleReadLine, @CRLF)
Return $splitted_string[1]
EndFunc ;==>ConsoleReadLine
Func ReadConsole($hConsoleInput, $ConsoleReadLine)
Local $lpBuffer = DllStructCreate("char[80]"), $lpNumberOfCharsRead = DllStructCreate('int')
DllStructSetData($lpBuffer, 1, $ConsoleReadLine)
Local $ret = DllCall("kernel32", "long", "ReadConsoleA", "long", $hConsoleInput, "ptr", DllStructGetPtr($lpBuffer), _
"long", StringLen($ConsoleReadLine), "ptr", DllStructGetPtr($lpNumberOfCharsRead), 'long', 0)
If $ret[0] = 0 Then Return SetError(1, 0, 0)
Return DllStructGetData($lpBuffer, 1)
EndFunc ;==>ReadConsole
!!! ACHTUNG !!! In SciTE bitte F7 statt F5 drücken (kompilieren), Beispiel wird danach automatisch aufgerufen!
To-Do-Liste:
To-Do-Liste
- Speicher für Primzahlen (Datenbank) um höhere Primzahlen errechnen zu können in Bearbeitung...
- Hinzufügen zahlreicher Funktionen im Bereich der Geometrie (genaueres folgt) in Bearbeitung...
- Hinzufügen von _MathEx_Ln() von UEZ in Bearbeitung...
Bugs
KEINE!
Habt ihr noch Vorschläge, Kritik, Änderungswünsche, Anregungen, etc.?
Download:
Im Moment sind keine Bugs bekannt, bitte meldet neue!
Version 2.0.0.0 (Beta): autoit.de/wcf/attachment/4572/
Version 2.0.1.0: autoit.de/wcf/attachment/5531/
Version 3.0.0.0 (Beta): autoit.de/wcf/attachment/6584/
Beispiel: autoit.de/wcf/attachment/6585/