Сейчас 22:29:43 Четверг, 28 марта, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Функция на сравнение чисел (прошу джассеров соорудить)
Функция на сравнение чисел
FkoFFДата: Понедельник, 12 Июля 2010, 16:39:56 | Сообщение # 1
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Собственно нужна функция в которую вбивается некоторое количество чисел (допустим по 2 для удобства), которая будет возвращать бОльшее из них в отдельную переменную.

Собственно нужно что бы выбрать из 8-9 чисел самое крупное и уже ориентируясь на него - делать "действия".


 

MaSerДата: Понедельник, 12 Июля 2010, 16:49:17 | Сообщение # 2
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
FkoFF, числа целые?

 

FkoFFДата: Понедельник, 12 Июля 2010, 16:51:58 | Сообщение # 3
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
нет, для реальных.

 

MaSerДата: Понедельник, 12 Июля 2010, 16:53:28 | Сообщение # 4
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Они абсолютно случайные или есть какая-то общая черта(больше сотни по модулю, меньше одного по модулю и т.п.)

 

SirNikolasДата: Понедельник, 12 Июля 2010, 17:20:25 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Я, наверное, чего-то не понял, т. к. я сразу догадался, как это делается. В массив Real вводишь числа, Count устанавливаешь на количество чисел.


 

FkoFFДата: Понедельник, 12 Июля 2010, 17:44:06 | Сообщение # 6
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
SirNikolas, то что ты показал - бред сивой кобылы ибо сравнивает только число и следующее от него. и грубо говоря, когда мы имеем:

50 10 11 30 12 1 на сравнение через подобный цикл то выдаст нам что 12 - самое большое, потому как при переборе число сравнивается только со следующим по массиву.


 

MaSerДата: Понедельник, 12 Июля 2010, 17:45:22 | Сообщение # 7
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (MaSer)
Они абсолютно случайные или есть какая-то общая черта(больше сотни по модулю, меньше одного по модулю и т.п.)


 

FkoFFДата: Понедельник, 12 Июля 2010, 17:52:17 | Сообщение # 8
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
единственный разумный вариант это перебор двойным циклом, но у меня что то в голове не получается собрать это воедино..

примерно

for each integer Pee from 1 to MAX do actions
for each integer Kay from 1 to MAX do actions:
if\then\else;
if: Real Comparison: Real[Pee] < Real[Kay]
then:
set None[Pee] = Real[Pee]
else
set None[Pee] = Real[Pee]+125

и потом

for each integer oF from 1 to max do actions:
if\then\else:
if: None[oF] = Real[oF]
then:
else: set Answer = Real[oF]

Получится что сначала через цикл каждое число сравнивается со всеми числами и если число меньше хоть одного числа = число записывается в другой массив под ту же ячейку

после того как все числа сравняться - через цикл проверяются все числа в обоих массивах и если хоть у одного числа отсутсвует аналог в другом массиве - значит это число самое большое.

Добавлено (12-07-2010, 17:52)
---------------------------------------------

Quote (MaSer)
Они абсолютно случайные или есть какая-то общая черта(больше сотни по модулю, меньше одного по модулю и т.п.)

что бы это значило?


 

SirNikolasДата: Понедельник, 12 Июля 2010, 18:16:16 | Сообщение # 9
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (FkoFF)
то, что ты показал - бред сивой кобылы
Полностью согласен. Запутался. Нужно вот так:

Set Answer = Real[1]
For each (Integer A), from 2 to Count, do (Actions)
_If
__Answer < Real[(Integer A)]
_Then
__Set Answer = Real[(Integer A)]


 

MaSerДата: Понедельник, 12 Июля 2010, 18:42:38 | Сообщение # 10
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (FkoFF)
что бы это значило?

Если они очень малы, а еще лучше, если отрицательны и очень малы, то можно делать это через вейт, но там есть проблема с задержкой, в ином случае - какой бы перебор ты не юзал, двумя, тремя, четыремя циклами - оптимальнее по ресурсом и скорости - обычный полный перебор.


 

Banzay89Дата: Понедельник, 12 Июля 2010, 18:43:53 | Сообщение # 11
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
FkoFF, числа по очереди вбиваються???? Если да, то почему бы просто не создать глобалку со значением 0 и после вбивания каждого следующего числа сравнивать его со значением глобалки. Если число больше, то присваевать его значение глобалке, если нет - ничего не делать. В конце получим глобалку со значением наибольшего введенного числа??
 

FkoFFДата: Понедельник, 12 Июля 2010, 18:56:00 | Сообщение # 12
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Banzay89)
FkoFF, числа по очереди вбиваються???? Если да, то почему бы просто не создать глобалку со значением 0 и после вбивания каждого следующего числа сравнивать его со значением глобалки. Если число больше, то присваевать его значение глобалке, если нет - ничего не делать. В конце получим глобалку со значением наибольшего введенного числа??

все генитальное - просто..


 

Banzay89Дата: Понедельник, 12 Июля 2010, 19:06:17 | Сообщение # 13
9 уровень
Группа: Проверенные
Сообщений: 858
Награды: 1
Репутация: 77
Блокировки:
Quote
генитальное

lol lol lol

 

[DUOS]Дата: Понедельник, 12 Июля 2010, 21:51:40 | Сообщение # 14
2 уровень
Группа: Пользователи
Сообщений: 26
Награды: 0
Репутация: 7
Блокировки:
FkoFF,
native Pow takes real x, real power returns real

В Jass есть такая функция, которая сравнивает, больше ли число заданного числа. Возвращает число, которое больше. Исходя из этого можно многое упростить.

Добавлено (12-07-2010, 21:51)
---------------------------------------------
Банальный пример - Pow(3,5) вернёт 5, а Pow(11,8) вернёт 11.

 

MaSerДата: Понедельник, 12 Июля 2010, 21:55:14 | Сообщение # 15
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
омг, это же степень.

 

[DUOS]Дата: Понедельник, 12 Июля 2010, 22:01:45 | Сообщение # 16
2 уровень
Группа: Пользователи
Сообщений: 26
Награды: 0
Репутация: 7
Блокировки:
Quote (MaSer)
омг, это же степень.

Ой. Извиняюсь. Снова JC подвёл. =\
Code
function IsNumGreater takes real num1, real num2 returns boolean
     return num1 > num2
endfunction  

function GetNumberDiff takes real num1, real num2 returns real
     if num2 > num1 then
         return num2 - num1
     elseif num1 > num2 then
         return -1 * (num2 - num1)     
     endif
     return 0
endfunction

Вот это показывает то, что число больше. Да и разность чисел посчитает.
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Функция на сравнение чисел (прошу джассеров соорудить)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz