Что нового

выбрать макс. и мин. число из списка чисел

Alexander

Новичок
Сообщения
105
Репутация
2
Нужно выбрать максимальное и минимально число из списка чисел. Например:
_Max(11.34, 12, 15.42, 12.78...)
Что-то вроде функций _Max и _Min, но там только 2 числа, а мне нужно 25 и больше...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
хех. вот народ ленивый пошел 8)
Код:
$N = 20
Dim $aList[$N + 1]
For $i = 0 to $N
	$aList[$i] = Random(1, 100, 1)
Next
$iMax = $aList[0]
$iMin = $aList[0]

For $i = 1 to $N
	If $aList[$i] <= $iMin Then $iMin = $aList[$i]
	If $aList[$i] >= $iMax Then $iMax = $aList[$i]
Next

ConsoleWrite("My Max is " & $iMax & @CRLF "My Min is " & $iMin & @CRLF)
 
Автор
A

Alexander

Новичок
Сообщения
105
Репутация
2
Пардон, а где указывать список чисел?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Alexander [?]
Пардон, а где указывать список чисел?
это тебе домашнее задание, найти где он указывается, и приспособить под свои нужды
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
#include <Math.au3>
Dim $iMin = 25, $iMax = 50, $i = Random($iMin, $iMax, 1) ;Задаем минимальное и максимальное количество чисел ;Генерим из этого случайное число для примера
MsgBox(0,0,$i) ;Отображаем число которое определит размерность массива и сколько чисел подвергнется сравнению
Dim $aArrey[$i] ;Создаем массив вмещающий в себя нужное нам количество чисел, определенное выше.

For $i = 1 To UBound($aArrey, 1)-1 Step 1 
    $aArrey[$i] = Random(1, 1000, 1) ;Записываем в ячейки с 1-й по последнюю нашего массива случайные числа от 1 до 1000
Next

$aArrey[0] = _Min($aArrey[1], $aArrey[2]) ;В 0-ю ячейку массива записываем результат сравнения первых двух чисел.
For $i = 3 To UBound($aArrey, 1)-1 Step 1 ;Последовательно сравниваем с результатам хранящимся в $aArrey[0] каждое число
    $aArrey[0] = _Min($aArrey[0], $aArrey[$i]) ;при нахождении числа меньше чем на данный момент содержится в $aArrey[0], обновляем его сохраняя туда наименьшее из найденных на данный момент чисел.
Next ;Сканируем массив на предмет наименьшего числа до тех пор пока он не кончится.

Dim $msg = "Min = "&$aArrey[0]&@CR ;Выводим результат
For $i = 1 To UBound($aArrey, 1)-1 Step 1
    $msg &= "$aArrey["&$i&"] = "&$aArrey[$i]&@CR
Next
MsgBox(0,0,$msg)


По сути тебе нужно это вот эти строки:
Код:
$aArrey[0] = _Min($aArrey[1], $aArrey[2]) ;В 0-ю ячейку массива записываем результат сравнения первых двух чисел.
For $i = 3 To UBound($aArrey, 1)-1 Step 1 ;Последовательно сравниваем с результатам хранящимся в $aArrey[0] каждое число
    $aArrey[0] = _Min($aArrey[0], $aArrey[$i]) ;при нахождении числа меньше чем на данный момент содержится в $aArrey[0], обновляем его сохраняя туда наименьшее из найденных на данный момент чисел.
Next ;Сканируем массив на предмет наименьшего числа до тех пор пока он не кончится.


Все остальное используется для того чтобы показать как оно ведет себя в действии.
$aArrey - это массив в котором хранятся твои числа. $aArrey[0] - это ячейка в которой этот код будет хранить минимальное на данный момент число

5 минут отдохнул с этой задачей. Вовзращаюсь дальше к адаптации алгоритмов нахождения пути v_v
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
OffTopic:
вот что с людьми делает отсутствие дискретной математик�
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941

VladUs

Скриптер
Сообщения
621
Репутация
181
А почему у меня если я массив инициализирую в объявлении массива, то расчет происходит
Код:
#include <Math.au3>
; Объявление массива
local $aChisla[5]=[1,3,8,10,45]
; Вычисление	
$max = _max($aChisla[0] , $aChisla[1])
$min = _Min($aChisla[0], $aChisla[1])
For $i = 0 to  UBound($aChisla) -1
	$max = _Max($max, $aChisla[$i])
	$min = _Min($min, $aChisla[$i])
Next
; Вывод результата
MsgBox(1,"Max",$max)
MsgBox(1,"Min",$min)


А вот если массив инициализирую в цикле то рассчета не происходит, хотя масив успешно инициализируется. В результате выдает "0" , "0"

Код:
#include <Math.au3>

$inputTotalchisel = InputBox("Введите кол - во цифр","")
; создание массива
Dim $aChisla[$inputTotalchisel]
 ; Инициализация массива в цикле	 
for $i =0 to $inputTotalchisel -1
	$inputhisla = InputBox("Введите Сами числа","")
	$aChisla[$i]=$inputhisla
next

; Вычисление	
$max = _max($aChisla[0] , $aChisla[1])
$min = _Min($aChisla[0], $aChisla[1])
For $i = 0 to  UBound($aChisla) -1
	$max = _Max($max, $aChisla[$i])
	$min = _Min($min, $aChisla[$i])
Next
; Вывод результата
MsgBox(1,"Max",$max)
MsgBox(1,"Min",$min)
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Код:
#include <Array.au3>

_Minx("1,2,3,4,5")


func _Minx($str)
	Dim $arr
	$arr = StringSplit($str, ",")
	$n = _ArrayMin($arr, 1)
	$in = _ArrayMinIndex($arr, 1)
	MsgBox(0, "", "Минимальное число "&$in&" по счёту, и равно "&$n)
 $ret[2] = [$in, $n]
 return $ret
EndFunc

Думаю написать аналогию для максимума не сложно...
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
VladUs сказал(а):
А вот если массив инициализирую в цикле то рассчета не происходит, хотя масив успешно инициализируется. В результате выдает "0" , "0"

Почитай про _ArrayAdd ;)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Код:
Func _MaxEx($n1, $n2, $n3 = 0, $n4 = 0, $n5 = 0, $n6 = 0, $n7 = 0, $n8 = 0, $n9 = 0, $n10 = 0, $n11 = 0, $n12 = 0, $n13 = 0, $n14 = 0, $n15 = 0, $n16 = 0, $n17 = 0, $n18 = 0, $n19 = 0, $n20 = 0, $n21 = 0, $n22 = 0, $n23 = 0, $n24 = 0, $n25 = 0, $n26 = 0, $n27 = 0, $n28 = 0, $n29 = 0, $n30 = 0, $n31 = 0, $n32 = 0, $n33 = 0, $n34 = 0, $n35 = 0, $n36 = 0, $n37 = 0, $n38 = 0, $n39 = 0, $n40 = 0, $n41 = 0, $n42 = 0, $n43 = 0, $n44 = 0, $n45 = 0, $n46 = 0, $n47 = 0, $n48 = 0, $n49 = 0, $n50 = 0, $n51 = 0, $n52 = 0, $n53 = 0, $n54 = 0, $n55 = 0, $n56 = 0, $n57 = 0, $n58 = 0, $n59 = 0, $n60 = 0, $n61 = 0, $n62 = 0, $n63 = 0, $n64 = 0, $n65 = 0, $n66 = 0, $n67 = 0, $n68 = 0, $n69 = 0, $n70 = 0, $n71 = 0, $n72 = 0, $n73 = 0, $n74 = 0, $n75 = 0, $n76 = 0, $n77 = 0, $n78 = 0, $n79 = 0, $n80 = 0, $n81 = 0, $n82 = 0, $n83 = 0, $n84 = 0, $n85 = 0, $n86 = 0, $n87 = 0, $n88 = 0, $n89 = 0, $n90 = 0, $n91 = 0, $n92 = 0, $n93 = 0, $n94 = 0, $n95 = 0, $n96 = 0, $n97 = 0, $n98 = 0, $n99 = 0, $n100 = 0, $n101 = 0, $n102 = 0, $n103 = 0, $n104 = 0, $n105 = 0, $n106 = 0, $n107 = 0, $n108 = 0, $n109 = 0, $n110 = 0, $n111 = 0, $n112 = 0, $n113 = 0, $n114 = 0, $n115 = 0, $n116 = 0, $n117 = 0, $n118 = 0, $n119 = 0, $n120 = 0, $n121 = 0, $n122 = 0, $n123 = 0, $n124 = 0, $n125 = 0, $n126 = 0, $n127 = 0, $n128 = 0, $n129 = 0, $n130 = 0, $n131 = 0, $n132 = 0, $n133 = 0, $n134 = 0, $n135 = 0, $n136 = 0, $n137 = 0, $n138 = 0, $n139 = 0, $n140 = 0, $n141 = 0, $n142 = 0, $n143 = 0, $n144 = 0, $n145 = 0, $n146 = 0, $n147 = 0, $n148 = 0, $n149 = 0, $n150 = 0, $n151 = 0, $n152 = 0, $n153 = 0, $n154 = 0, $n155 = 0, $n156 = 0, $n157 = 0, $n158 = 0, $n159 = 0, $n160 = 0, $n161 = 0, $n162 = 0, $n163 = 0, $n164 = 0, $n165 = 0, $n166 = 0, $n167 = 0, $n168 = 0, $n169 = 0, $n170 = 0, $n171 = 0, $n172 = 0, $n173 = 0, $n174 = 0, $n175 = 0, $n176 = 0, $n177 = 0, $n178 = 0, $n179 = 0, $n180 = 0, $n181 = 0, $n182 = 0, $n183 = 0, $n184 = 0, $n185 = 0, $n186 = 0, $n187 = 0, $n188 = 0, $n189 = 0, $n190 = 0, $n191 = 0, $n192 = 0, $n193 = 0, $n194 = 0, $n195 = 0, $n196 = 0, $n197 = 0, $n198 = 0, $n199 = 0, $n200 = 0, $n201 = 0, $n202 = 0, $n203 = 0, $n204 = 0, $n205 = 0, $n206 = 0, $n207 = 0, $n208 = 0, $n209 = 0, $n210 = 0, $n211 = 0, $n212 = 0, $n213 = 0, $n214 = 0, $n215 = 0, $n216 = 0, $n217 = 0, $n218 = 0, $n219 = 0, $n220 = 0, $n221 = 0, $n222 = 0, $n223 = 0, $n224 = 0, $n225 = 0, $n226 = 0, $n227 = 0, $n228 = 0, $n229 = 0, $n230 = 0, $n231 = 0, $n232 = 0, $n233 = 0, $n234 = 0, $n235 = 0, $n236 = 0, $n237 = 0, $n238 = 0, $n239 = 0, $n240 = 0, $n241 = 0, $n242 = 0, $n243 = 0, $n244 = 0, $n245 = 0, $n246 = 0, $n247 = 0, $n248 = 0, $n249 = 0, $n250 = 0, $n251 = 0, $n252 = 0, $n253 = 0, $n254 = 0, $n255 = 0)
	For $i = 2 To @NumParams
		$Val = Eval('n' & $i)
		If $Val > $n1 Then
			$n1 = $Val
		EndIf
	Next
	Return $n1
EndFunc   ;==>_MaxEx

Func _MinEx($n1, $n2, $n3 = 0, $n4 = 0, $n5 = 0, $n6 = 0, $n7 = 0, $n8 = 0, $n9 = 0, $n10 = 0, $n11 = 0, $n12 = 0, $n13 = 0, $n14 = 0, $n15 = 0, $n16 = 0, $n17 = 0, $n18 = 0, $n19 = 0, $n20 = 0, $n21 = 0, $n22 = 0, $n23 = 0, $n24 = 0, $n25 = 0, $n26 = 0, $n27 = 0, $n28 = 0, $n29 = 0, $n30 = 0, $n31 = 0, $n32 = 0, $n33 = 0, $n34 = 0, $n35 = 0, $n36 = 0, $n37 = 0, $n38 = 0, $n39 = 0, $n40 = 0, $n41 = 0, $n42 = 0, $n43 = 0, $n44 = 0, $n45 = 0, $n46 = 0, $n47 = 0, $n48 = 0, $n49 = 0, $n50 = 0, $n51 = 0, $n52 = 0, $n53 = 0, $n54 = 0, $n55 = 0, $n56 = 0, $n57 = 0, $n58 = 0, $n59 = 0, $n60 = 0, $n61 = 0, $n62 = 0, $n63 = 0, $n64 = 0, $n65 = 0, $n66 = 0, $n67 = 0, $n68 = 0, $n69 = 0, $n70 = 0, $n71 = 0, $n72 = 0, $n73 = 0, $n74 = 0, $n75 = 0, $n76 = 0, $n77 = 0, $n78 = 0, $n79 = 0, $n80 = 0, $n81 = 0, $n82 = 0, $n83 = 0, $n84 = 0, $n85 = 0, $n86 = 0, $n87 = 0, $n88 = 0, $n89 = 0, $n90 = 0, $n91 = 0, $n92 = 0, $n93 = 0, $n94 = 0, $n95 = 0, $n96 = 0, $n97 = 0, $n98 = 0, $n99 = 0, $n100 = 0, $n101 = 0, $n102 = 0, $n103 = 0, $n104 = 0, $n105 = 0, $n106 = 0, $n107 = 0, $n108 = 0, $n109 = 0, $n110 = 0, $n111 = 0, $n112 = 0, $n113 = 0, $n114 = 0, $n115 = 0, $n116 = 0, $n117 = 0, $n118 = 0, $n119 = 0, $n120 = 0, $n121 = 0, $n122 = 0, $n123 = 0, $n124 = 0, $n125 = 0, $n126 = 0, $n127 = 0, $n128 = 0, $n129 = 0, $n130 = 0, $n131 = 0, $n132 = 0, $n133 = 0, $n134 = 0, $n135 = 0, $n136 = 0, $n137 = 0, $n138 = 0, $n139 = 0, $n140 = 0, $n141 = 0, $n142 = 0, $n143 = 0, $n144 = 0, $n145 = 0, $n146 = 0, $n147 = 0, $n148 = 0, $n149 = 0, $n150 = 0, $n151 = 0, $n152 = 0, $n153 = 0, $n154 = 0, $n155 = 0, $n156 = 0, $n157 = 0, $n158 = 0, $n159 = 0, $n160 = 0, $n161 = 0, $n162 = 0, $n163 = 0, $n164 = 0, $n165 = 0, $n166 = 0, $n167 = 0, $n168 = 0, $n169 = 0, $n170 = 0, $n171 = 0, $n172 = 0, $n173 = 0, $n174 = 0, $n175 = 0, $n176 = 0, $n177 = 0, $n178 = 0, $n179 = 0, $n180 = 0, $n181 = 0, $n182 = 0, $n183 = 0, $n184 = 0, $n185 = 0, $n186 = 0, $n187 = 0, $n188 = 0, $n189 = 0, $n190 = 0, $n191 = 0, $n192 = 0, $n193 = 0, $n194 = 0, $n195 = 0, $n196 = 0, $n197 = 0, $n198 = 0, $n199 = 0, $n200 = 0, $n201 = 0, $n202 = 0, $n203 = 0, $n204 = 0, $n205 = 0, $n206 = 0, $n207 = 0, $n208 = 0, $n209 = 0, $n210 = 0, $n211 = 0, $n212 = 0, $n213 = 0, $n214 = 0, $n215 = 0, $n216 = 0, $n217 = 0, $n218 = 0, $n219 = 0, $n220 = 0, $n221 = 0, $n222 = 0, $n223 = 0, $n224 = 0, $n225 = 0, $n226 = 0, $n227 = 0, $n228 = 0, $n229 = 0, $n230 = 0, $n231 = 0, $n232 = 0, $n233 = 0, $n234 = 0, $n235 = 0, $n236 = 0, $n237 = 0, $n238 = 0, $n239 = 0, $n240 = 0, $n241 = 0, $n242 = 0, $n243 = 0, $n244 = 0, $n245 = 0, $n246 = 0, $n247 = 0, $n248 = 0, $n249 = 0, $n250 = 0, $n251 = 0, $n252 = 0, $n253 = 0, $n254 = 0, $n255 = 0)
	For $i = 2 To @NumParams
		$Val = Eval('n' & $i)
		If $Val < $n1 Then
			$n1 = $Val
		EndIf
	Next
	Return $n1
EndFunc   ;==>_MinEx

ConsoleWrite(_MaxEx(1, 4, 7, 2, 9, 0) & @CR)
ConsoleWrite(_MinEx(1, 4, 7, 2, 9, 0) & @CR)


:smile:
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
OffTopic:
Вот это куча Букав!

Yashied, ты ведь не руками это набирал!? :laugh:
 

VladUs

Скриптер
Сообщения
621
Репутация
181
NoMad73rus [?]
Почитай про _ArrayAdd
Да не... здесь это не причем все гораздо банальнее..
Вместо строчки
Код:
$inputhisla = InputBox("Введите Сами числа","")
$aChisla[$i]=$inputhisla

надо
Код:
$inputhisla = InputBox("Введите Сами числа","")
$aChisla[$i]=number($inputhisla)

Переменная рассматриволась как строковая и рассчитаться ничего не могло.
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
VladUs, я просто за минимум букав в коде ))
Код:
#include <Array.au3>
Dim $aChisla[1]
 ; Инициализация массива в цикле
While 1
    $inputhisla = InputBox("Введите Сами числа","")
	If @error Then ExitLoop
	_ArrayAdd($aChisla, Int($inputhisla))
WEnd
; Вычисление
$max = _ArrayMax($aChisla, 1, 1)
$min = _ArrayMin($aChisla, 1, 1)
; Вывод результата
MsgBox(1,"Max",$max)
MsgBox(1,"Min",$min)
 

VladUs

Скриптер
Сообщения
621
Репутация
181
NoMad73rus [?]
VladUs, я просто за минимум букав в коде ))
Но за подключение дополнительных библиотек. Кода меньше, а файл больше...
При компиляции твой - то файл больше моего получается.... :smile: ;)
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
OffTopic:
VladUs сказал(а):
При компиляции твой - то файл больше моего получается.... :smile: ;)
Просто использовать /striponly в стандартном обфуксаторе, и файл получится меньше ))
 

Bloodrinker

<Блуждающий...>
Сообщения
228
Репутация
19
OffTopic:
вам фигней страдать не надоело? ;)

Belfigor сказал(а):
А что это? У меня вроде ни в инсте ни в школе не было такого.
ну ты знаешь что такое комбинаторика например? это из дискретной математики, к примеру 4-х томник (или 3-х... не помню) кнута, а точнее "Дональд Э. Кнут - Искусство программирования." этого поля ягода, к дискретной математике относится тобишь...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
OffTopic:
Bloodrinker
ты сейчас говоришь вещи, о которых имеешь слабое представление ;) оставь это дело
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Bloodrinker

{OverQuoteWarn.SModer}
 
Верх