olivarra1 Posted February 11, 2008 Share Posted February 11, 2008 (edited) I've "developed" a simple code that it lets you know in a simple array (1 dimension) what of the numbers is the bigger or the smaller i know about the function _Max or _Min, but it only let you put 2 numbers this is the code: $numbers = 5 dim $number[$numbers] $number[0] = 4 $number[1] = 6 $number[2] = 2 $number[3] = 8 $number[4] = 3 $x = 0 $j = 1 Do If $number[$x] > $number[$x + $j] Then $j = $j + 1 Else $x = $x + $j $j = 1 EndIf until $x + $j >= $number MsgBox(0, "", "the bigger number is: " & $number[$x]) $x = 0 $j = 1 Do If $number[$x] < $number[$x + $j] Then $j = $j + 1 Else $x = $x + $j $j = 1 EndIf until $x + $j >= $number MsgBox(0, "", "the smaller number is: " & $number[$x]) i'm sorry if I don't talk good english (i'm spanish) olivarra1 PD: is this useful? ^^ Edited February 11, 2008 by olivarra1 Link to comment Share on other sites More sharing options...
gseller Posted February 11, 2008 Share Posted February 11, 2008 Cool subject... Unfortunately not working for me... Getting the following errors.. >C:\Program Files\AutoIt3\SciTE\..\au3check.exe "C:\0000 - Files\Number Bigger or Smaller.au3" AutoIt3 Syntax Checker v1.54.8 Copyright © Tylo 2007 C:\XX0000 - Files\Number Bigger or Smaller.au3(29,21) : WARNING: $num: possibly used before declaration. until $x + $j = $num ~~~~~~~~~~~~~~~~~~~~^ C:\XX0000 - Files\Number Bigger or Smaller.au3(29,21) : ERROR: $num: undeclared global variable. until $x + $j = $num ~~~~~~~~~~~~~~~~~~~~^ C:\XX0000 - Files\Number Bigger or Smaller.au3 - 1 error(s), 1 warning(s) >Exit code: 2 Time: 0.222 Link to comment Share on other sites More sharing options...
GaryFrost Posted February 11, 2008 Share Posted February 11, 2008 http://www.autoitscript.com/forum/index.ph...st&p=148514 SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
olivarra1 Posted February 11, 2008 Author Share Posted February 11, 2008 Cool subject... Unfortunately not working for me... Getting the following errors..>C:\Program Files\AutoIt3\SciTE\..\au3check.exe "C:\0000 - Files\Number Bigger or Smaller.au3"AutoIt3 Syntax Checker v1.54.8 Copyright © Tylo 2007C:\XX0000 - Files\Number Bigger or Smaller.au3(29,21) : WARNING: $num: possibly used before declaration.until $x + $j = $num~~~~~~~~~~~~~~~~~~~~^C:\XX0000 - Files\Number Bigger or Smaller.au3(29,21) : ERROR: $num: undeclared global variable.until $x + $j = $num~~~~~~~~~~~~~~~~~~~~^C:\XX0000 - Files\Number Bigger or Smaller.au3 - 1 error(s), 1 warning(s)>Exit code: 2 Time: 0.222Fixed http://www.autoitscript.com/forum/index.ph...st&p=148514mhhh but isn't this a very long script?olivarra1 Link to comment Share on other sites More sharing options...
GaryFrost Posted February 11, 2008 Share Posted February 11, 2008 Fixed mhhh but isn't this a very long script?olivarra1Maybe, I wrote it about 2 years ago, can probably be shortened if someone wants to take the time to. SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
martin Posted February 12, 2008 Share Posted February 12, 2008 (edited) I've "developed" a simple code that it lets you know in a simple array (1 dimension) what of the numbers is the bigger or the smaller i know about the function _Max or _Min, but it only let you put 2 numbers this is the code: $numbers = 5 dim $number[$numbers] $number[0] = 4 $number[1] = 6 $number[2] = 2 $number[3] = 8 $number[4] = 3 $x = 0 $j = 1 Do If $number[$x] > $number[$x + $j] Then $j = $j + 1 Else $x = $x + $j $j = 1 EndIf until $x + $j >= $number MsgBox(0, "", "the bigger number is: " & $number[$x]) $x = 0 $j = 1 Do If $number[$x] < $number[$x + $j] Then $j = $j + 1 Else $x = $x + $j $j = 1 EndIf until $x + $j >= $number MsgBox(0, "", "the smaller number is: " & $number[$x]) i'm sorry if I don't talk good english (i'm spanish) olivarra1 PD: is this useful? ^^ If you change until $x + $j >= $number to until $x + $j >= $numbers in both places it's used then your function will work correctly. You can simplify initialising an array like this Dim $number[5] = [4,6,2,8,3] and for the last element you can use Ubound($number) - 1 so you would have until $x + $j >= Ubound($number) - 1 Although that is more complicated it means you can apply your code to an array with any number of elements greater than 1. Edited February 12, 2008 by martin Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
GaryFrost Posted February 12, 2008 Share Posted February 12, 2008 (edited) works with 1 or 2 arrays (1 dimensional) expandcollapse popup#include <Array.au3> #include <Misc.au3> Local $Array1[5] = [3, 2, 8, 5, 10] Local $Array2[3] = ["02", "1", "20"] Local $Array3[4] = ["3", "02", "-1", "11"] Local $Max, $Min $Max = _MinMaxa($Array1, 1) If Not @error Then ConsoleWrite('@@ Debug(1) :$Max = ' & $Max & @LF) Else ConsoleWrite('@@ Debug(1) :Error = ' & @error & @LF) EndIf $Max = _MinMaxa($Array2, 1) If Not @error Then ConsoleWrite('@@ Debug(2) :$Max = ' & $Max & @LF) Else ConsoleWrite('@@ Debug(2) :Error = ' & @error & @LF) EndIf $Max = _MinMaxa($Array3, 1, $Array1) If Not @error Then ConsoleWrite('@@ Debug(3) :$Max = ' & $Max & @LF) Else ConsoleWrite('@@ Debug(3) :Error = ' & @error & @LF) EndIf $Min = _MinMaxa($Array1) If Not @error Then ConsoleWrite('@@ Debug(4) :$Min = ' & $Min & @LF) Else ConsoleWrite('@@ Debug(4) :Error = ' & @error & @LF) EndIf $Min = _MinMaxa($Array2) If Not @error Then ConsoleWrite('@@ Debug(5) :$Min = ' & $Min & @LF) Else ConsoleWrite('@@ Debug(5) :Error = ' & @error & @LF) EndIf $Min = _MinMaxa($Array1, 0, $Array3) If Not @error Then ConsoleWrite('@@ Debug(6) :$Min = ' & $Min & @LF) Else ConsoleWrite('@@ Debug(6) :Error = ' & @error & @LF) EndIf ; return min or max number from 1 or 2 arrays Func _MinMaxa(ByRef $a_nums01, $MaxFlag = 0, $a_nums02 = 0) Local $vnum02 If Not IsArray($a_nums01) Then Return SetError(1, 0, 0) If @NumParams = 3 Then If Not IsArray($a_nums02) Then Return SetError(3, 0, 0) $vnum02 = _MinMaxa($a_nums02, $MaxFlag) If @error Then Return SetError(@error, 0, 0) EndIf ; For $idx = 0 To UBound($a_nums01) - 1 If StringIsFloat($a_nums01[$idx]) Or StringIsInt($a_nums01[$idx]) Then $a_nums01[$idx] = Number($a_nums01[$idx]) Else Return SetError(2, 0, 0) EndIf Next _ArraySort($a_nums01, $MaxFlag) If @NumParams = 3 Then If $MaxFlag Then Return _Iif($a_nums01[0] > $vnum02, $a_nums01[0], $vnum02) Else Return _Iif($a_nums01[0] < $vnum02, $a_nums01[0], $vnum02) EndIf EndIf Return $a_nums01[0] EndFunc ;==>_MinMaxa Edited February 12, 2008 by GaryFrost SciTE for AutoItDirections for Submitting Standard UDFs Don't argue with an idiot; people watching may not be able to tell the difference. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now