Функция на сравнение чисел
|
|
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
Блокировки:
|
|
|
|
|
[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 Вот это показывает то, что число больше. Да и разность чисел посчитает.
|
|
|
|