|
You last visited: Today at 17:09
Advertisement
Tratsch rund um Autoit / Autoit Talk | kleinere Fragen
Discussion on Tratsch rund um Autoit / Autoit Talk | kleinere Fragen within the AutoIt forum part of the Coders Den category.
05/07/2013, 17:13
|
#1186
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
Code:
$random = Random(1,30,1)
_FFFormOptionSelect("date", "id", $random, "value")
Random(1,30, 1)
damit er keine komma zahlen generiert
|
|
|
05/07/2013, 17:15
|
#1187
|
elite*gold: 400
Join Date: Nov 2008
Posts: 67,905
Received Thanks: 19,505
|
Setz mal den Flag auf 1
sonst generiert Random eine Float Zahl mit der er vielleicht nicht umgehen kann
|
|
|
05/08/2013, 21:14
|
#1188
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Jemand eine Idee, wie ich diesen Code hier
Code:
If $i > z Then
Do
$i -= z
Until $i < z
EndIf
ohne die Do-Until Schleife schreiben kann?
Wenn i größer als z, dann ziehe von i so lange z ab, bis i kleiner z.
MfG
|
|
|
05/08/2013, 21:24
|
#1189
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Bitte nicht hauen
Code:
While $i > z
$i -= z
Wend
Keine Ahnung ob von Logik richtig
|
|
|
05/08/2013, 21:25
|
#1190
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Code:
If $i > z Then
While 1
$i -= z
If $i < z Then ExitLoop
WEnd
EndIf
oder
Code:
If $i > z Then
While $i >= z
$i -= z
WEnd
EndIf
Edit - Alternativer Mindfuck:
Code:
If $i > z Then
For $i = 0 To 1 + Floor(($i-z)/z) ;// Floor in AutoIt nicht zwingend notwendig, da "For $i = 0 to 0.x" einmal ausgeführt wird. Logisch betrachtet kann aber nur xmal mit ganzem x ausgeführt werden.
$i -= z
Next
EndIf
Ich nehme an, ohne Herleitung ist das nicht verständlich?
|
|
|
05/08/2013, 21:37
|
#1191
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by Requι
Bitte nicht hauen
Code:
While $i > z
$i -= z
Wend
Keine Ahnung ob von Logik richtig
|
Quote:
Originally Posted by -STORM-
Code:
If $i > z Then
While 1
$i -= z
If $i < z Then ExitLoop
WEnd
EndIf
oder
Code:
If $i > z Then
While $i >= z
$i -= z
WEnd
EndIf
Edit - Alternativer Mindfuck:
Code:
If $i > z Then
For $i = 0 To 1 + ($i-z)/z
$i -= z
Next
EndIf
|
Dann hab ich aber immer noch Schleifen. Das hätte ich dazu schreiben sollen: Wen möglich, möchte ich ganz auf Schleifen verzichten, da viele Schleifendurchläufe einfach langsam sind.
Trotzdem danke für eure Antworten.
MfG
|
|
|
05/08/2013, 21:41
|
#1192
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
wie willst du mehrere gleiche aktionen hintereinander ausführen ohne schleife?
If $i>z then
$i = z
endif
willste ja warscheinlich nicht
|
|
|
05/08/2013, 21:49
|
#1193
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
willst du zwischendrinn mit den variablen arbeiten, oder zählt nur das endergebnis?
PHP Code:
If $i > $z Then $i = $i - ($z * (Ceiling($i/$z))) EndIf
|
|
|
05/08/2013, 21:49
|
#1194
|
elite*gold: 3570
Join Date: Dec 2012
Posts: 13,044
Received Thanks: 8,252
|
Das würde ja eig gehen
Code:
If $i > z Then
$i = z
$i -= z
EndIf
Schon hast du $i < z
|
|
|
05/08/2013, 21:52
|
#1195
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
was ist genau dein ziel?
i < z und die differenz von i zu z ist auch wichtig?
edit:
k = mod(i,z)
i=i-(z-k)
kommt zum selben ergebnis wie die schleife
|
|
|
05/08/2013, 21:57
|
#1196
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Ganz ohne Schleifen kann man in AutoIt nichts wiederholen. Da bräuchte man ne jump/goto Anweisung, was nebenbei ziemlich unübersichtlich wird.
Wenn in der Schleife außer der Subraktion nichts anderes stehen soll, kann man die allerdings die Rechnung zusammenfassen.
Quote:
Originally Posted by butter123
If $i>z then
$i = z
endif
|
Liefert nur dasselbe Ergebnis, wenn $i ein ganzzahliges vielfaches von z ist.
Vom Prinzip her aber richtig gedacht.
Quote:
Originally Posted by Requι
Das würde ja eig gehen
Code:
If $i > z Then
$i = z
$i -= z
EndIf
Schon hast du $i < z
|
Auch nicht gleichbedeutend, das ergibt $i =0.
Dasselbe Ergebnis erhält man wie folgt:
Wird z von $i sooft abgezogen, bis $i gleich z ist, braucht es ($i-z)/z Durchgänge (theoretisch halt; praktisch ist nur eine ganzzahlige Anzahl an Durchgängen möglich).
Damit $i kleiner als z ist, ist also ein Vorgang mehr nötig, also Floor(($i-z)/z)+1 Vorgänge.
Zieht man sooft z von $i ab, ergibt das:
Code:
$i -= z*(Floor(($i-z)/z)+1)
Somit braucht man keine Schleife und spart Rechenpower.
Edit:
Quote:
Originally Posted by omer36
willst du zwischendrinn mit den variablen arbeiten, oder zählt nur das endergebnis?
PHP Code:
If $i > $z Then $i = $i - ($z * (Ceiling($i/$z))) EndIf
|
Am nächsten dran, jedoch ist Ceiling(x) nicht gleich Floor(x)+1, da ganzzahlige x nicht aufgerundet werden, sondern gleich bleiben.
Außerdem ist das x hier nicht $i/z, sondern ($i-z)/z.
Nach deinem Code wird im übertragenen Sinne die Schleife wiederholt, bis $i = 0 ist (also $i/z mal) bzw. bis $i = -z ist (für nicht ganzzahliges $i/z wegen Ceiling). Damit es nur wiederholt wird, bis $i < z ist, sind ($i-z)/z Durchgänge nötig.
|
|
|
05/08/2013, 22:11
|
#1197
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
PHP Code:
If $i > $z Then MsgBox("","",_r($i, $z)) EndIf
Func _r($i, $z) $i -= $z If $i < $z Then Return $i Return _r($i, $z) EndFunc
vllt. gehts ja mit ner rekursiven funktion schneller als mit einer schleife,
kannst ja mal testen.
€
joa, hatte wohl nen denkfehler,
|
|
|
05/08/2013, 22:12
|
#1198
|
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
|
ich denke floor und mod sollten trotzdem noch schneller sein
|
|
|
05/08/2013, 22:13
|
#1199
|
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,142
|
Quote:
Originally Posted by butter123
edit:
k = mod(i,z)
i=i-(z-k)
kommt zum selben ergebnis wie die schleife
|
Könntest du erklären, wie du darauf gekommen bist?
Ausprobieren? Ich glaube nicht, dass das für alle i und z funktioniert.
Mod(i,z) gibt nur den Rest von i/z wieder.
Edit: Wieso bin ich da nicht drauf gekommen:
Code:
$i -= z*(Floor(($i-z)/z)+1)
gleichbedeutend mit
Wobei meine erste tolle Lösung natürlich total umständlich ist. :/
|
|
|
05/08/2013, 22:20
|
#1200
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by omer36
willst du zwischendrinn mit den variablen arbeiten, oder zählt nur das endergebnis?
PHP Code:
If $i > $z Then
$i = $i - ($z * (Ceiling($i/$z)))
EndIf
|
Danke!
Mit floor und abs konnte ich die Ausführung meines Scripts um 246% erhöhen und das nur durch das ersetzen der Schleife...
Bei Ceiling kann i negativ werden. da ja z.B. Ceiling(201/100) 3 ergibt.
Bei Floor wird es auf jeden Fall positiv.
Quote:
Originally Posted by Requι
Das würde ja eig gehen
Code:
If $i > z Then
$i = z
$i -= z
EndIf
Schon hast du $i < z
|
Da wären meine Bedingungen aber nicht erfüllt. Das von i z abgezogen werden soll.
MfG
|
|
|
Similar Threads
|
[Sammelthread]Fragen zu Autoit wie man Hacks herstellt(Autoit) + Antworten
11/16/2011 - Metin2 - 0 Replies
Hallo Liebe Community,
Ich habe diesen Thread aufgemacht weil manche leute mit Autoit nicht mehr weiterkommen wie man Hack herstellt ,ich habe mit schon ein Multihack mit Autoit herstellt das war einfach .Da viele User nicht weiterkommen werden habe ich mich entschieden ein Thread aufzumachen mit Fragen und ich den dann Antworten kann und helfen kann!
------------------------------------------------- ---------------------------
Mein Multihack:...
|
All times are GMT +1. The time now is 17:09.
|
|