Что нового

Поиск минимума/максимума

borsch

Новичок
Сообщения
2
Репутация
0
Доброго времени суток. Собственно имеется проблема с нахождением минимума/максимума в массиве, состоящем из цифр, и пустых ячеек (сам массив хранится в *.ini - файле, в виде строки и разделителем - "|")
Не всегда получаться получить правильные значения. Данная проблема наблюдается только когда имеются 3-х значные и 4-х значные цифры вместе.
Код:
#include <Array.au3>

;~ Dim $sellprices = ['','','', 500, 900, 1000, 1500, 1500]

;~ $sellpricesStr = StringStripWS(IniRead(@ScriptDir&"\Data\"&"18933"&".ini","Sellprices","sellprices",''),8)

$sellpricesStr = "|||500|900|1 000|1 100|1 100|1 100|1 500|3 000"
$sellprices = StringSplit($sellpricesStr, "|", 2)
_ArrayDisplay($sellprices)


MsgBox(0,0,"Min: " & _ArrayMin($sellprices) & "Max: " & _ArrayMax($sellprices))
MsgBox(0,0,"Min: " & ArrayMin($sellprices) & "Max: " & ArrayMax($sellprices))

Func ArrayMax($array)
	$max = 1
	For $i = 0 To UBound($array)-1
		If StringIsDigit($array[$i]) Then
			If $max < $array[$i] Then
				$max = $array[$i]
			EndIf
		EndIf
	Next
	Return $max
EndFunc

Func ArrayMin($array)
	$min =  ArrayMax($array)
	For $i = 0 To UBound($array)-1
		If StringIsDigit($array[$i]) Then
			If $min > $array[$i] Then
				$min = $array[$i]
			EndIf
		EndIf
	Next
	Return $min
EndFunc


Стандартный поиск с помощью _ArrayMin() не подходит, так как имеются пустые ячейки. И почему-то не верно находит максимальное значение. Убирать пробелы пробовал, не особо помогло.

Заранее извиняюсь за возможно не верно оформленное название или темы. Надеюсь на понимание, так как новичек в данном деле.
 
Автор
B

borsch

Новичок
Сообщения
2
Репутация
0
Вроде проблема решилась добавлением флагов и предварительным "очищением" массива от пустых строк.
Код:
MsgBox(0,0,"Min: " & _ArrayMin($sellprices, 1) & "Max: " & _ArrayMax($sellprices, 1))


Думаю, тему можно закрыть, но хотелось бы услышать объяснение или может быть указание на ошибку.
 
Верх