Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Страница 2 из 2«12
Модератор форума: Peter, DEMBEL, YURIY 
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » рандомизация числа больше 9007199254740990 не работает
рандомизация числа больше 9007199254740990 не работает
PeterДата: Пн, 17 Октября 2016, 02:56 | Сообщение # 31
Админ NeoBook
Цитата kop9000 ()
через 5 мин скину правельный пример
вот правельный пример

Цитата kop9000 ()
только странно что он всегда генерирует все 16 цифр. и редко 15 цифр

:)
Самое занятное, что код в сообщении 24 был полностью правильным.
И 16 разрядов получается и все остальное тоже.
:)
Но...
Цитата Peter ()
нашлепал AND, а надо было OR.

И никто не обратил внимание на элементарное отсутствие логики в этом случае.
А ведь я даже не проверял - плюхнул от балды (с умным видом), и....прокатило.
scratch

kop9000, уж сто раз говорил: пока ты будешь тупо копипастить чужой код, а не думать над ним, ничего хорошего не будет.
Тебе дадена "заготовка", а дальше - сам!


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата kop9000 ()
через 5 мин скину правельный пример
вот правельный пример

Цитата kop9000 ()
только странно что он всегда генерирует все 16 цифр. и редко 15 цифр

:)
Самое занятное, что код в сообщении 24 был полностью правильным.
И 16 разрядов получается и все остальное тоже.
:)
Но...
Цитата Peter ()
нашлепал AND, а надо было OR.

И никто не обратил внимание на элементарное отсутствие логики в этом случае.
А ведь я даже не проверял - плюхнул от балды (с умным видом), и....прокатило.
scratch

kop9000, уж сто раз говорил: пока ты будешь тупо копипастить чужой код, а не думать над ним, ничего хорошего не будет.
Тебе дадена "заготовка", а дальше - сам!

Автор - Peter
Дата добавления - 17 Октября 2016 в 02:56
antonДата: Пн, 17 Октября 2016, 08:45 | Сообщение # 32
Ветеран форума
Цитата Peter ()
И никто не обратил внимание на элементарное отсутствие логики в этом случае.
А ведь я даже не проверял - плюхнул от балды (с умным видом), и....прокатило.

При OR случайное число в 99,9% случаев будет состоять из того же количества символов что и заданное... А на варианте AND можно легко построить пример бесконечного цикла: :)
Код
SetVar "[LenR]" "0"
While "[LenR]" "<>" "2"
SetVar "[InPut]" "99"

SetVar "[Result]" "0"
SetVar "[R]" "0"
StrLen "[InPut]" "[Len]"
Random "[Len]" "[Len]"
SetVar "[i]" "1"
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"
  SetVar "[Result]" "[R]"
  Random "9" "[Num]"
  If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf
  Math "[i]+1" "0" "[i]"
EndWhile
ClearVariables "[i],[Len],[Num],[R]"

StrLen "[Result]" "[LenR]"
EndWhile


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"

Сообщение отредактировано
anton - Пн, 17 Октября 2016, 09:02
 
Сообщение
Цитата Peter ()
И никто не обратил внимание на элементарное отсутствие логики в этом случае.
А ведь я даже не проверял - плюхнул от балды (с умным видом), и....прокатило.

При OR случайное число в 99,9% случаев будет состоять из того же количества символов что и заданное... А на варианте AND можно легко построить пример бесконечного цикла: :)
Код
SetVar "[LenR]" "0"
While "[LenR]" "<>" "2"
SetVar "[InPut]" "99"

SetVar "[Result]" "0"
SetVar "[R]" "0"
StrLen "[InPut]" "[Len]"
Random "[Len]" "[Len]"
SetVar "[i]" "1"
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"
  SetVar "[Result]" "[R]"
  Random "9" "[Num]"
  If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf
  Math "[i]+1" "0" "[i]"
EndWhile
ClearVariables "[i],[Len],[Num],[R]"

StrLen "[Result]" "[LenR]"
EndWhile

Автор - anton
Дата добавления - 17 Октября 2016 в 08:45
kop9000Дата: Пн, 17 Октября 2016, 11:08 | Сообщение # 33
Ветеран форума
Цитата Peter ()
Тебе дадена "заготовка", а дальше - сам!


заготовка заготовка. вы такими мерами меня вообще скоро с ума сведёте. :D
 
Сообщение
Цитата Peter ()
Тебе дадена "заготовка", а дальше - сам!


заготовка заготовка. вы такими мерами меня вообще скоро с ума сведёте. :D

Автор - kop9000
Дата добавления - 17 Октября 2016 в 11:08
PeterДата: Пн, 17 Октября 2016, 11:48 | Сообщение # 34
Админ NeoBook
Цитата anton ()
При OR случайное число в 99,9% случаев будет состоять из того же количества символов что и заданное

А иначе и быть не может.
Этому есть простое объяснение.
Цитата anton ()
А на варианте AND можно легко построить пример бесконечного цикла:

А что мешает сделать это на OR ?
А можно и вообще без них обойтись.

Цитата kop9000 ()
вы такими мерами меня вообще скоро с ума сведёте

Если не начнешь думать над кодом, а продолжишь действовать "методом тыка", сам же себя и сведешь.
kop9000, заруби себе на носу: КАЖДАЯ строка кода должна быть тебе понятна (что - зачем - почему - для чего и т.д.), и тогда твой код заработает.
;)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата anton ()
При OR случайное число в 99,9% случаев будет состоять из того же количества символов что и заданное

А иначе и быть не может.
Этому есть простое объяснение.
Цитата anton ()
А на варианте AND можно легко построить пример бесконечного цикла:

А что мешает сделать это на OR ?
А можно и вообще без них обойтись.

Цитата kop9000 ()
вы такими мерами меня вообще скоро с ума сведёте

Если не начнешь думать над кодом, а продолжишь действовать "методом тыка", сам же себя и сведешь.
kop9000, заруби себе на носу: КАЖДАЯ строка кода должна быть тебе понятна (что - зачем - почему - для чего и т.д.), и тогда твой код заработает.
;)

Автор - Peter
Дата добавления - 17 Октября 2016 в 11:48
antonДата: Пн, 17 Октября 2016, 14:08 | Сообщение # 35
Ветеран форума
Цитата Peter ()
А что мешает сделать это на OR ?
А можно и вообще без них обойтись.

Нечего не мешает, и на OR можно. Я с AND пример бесконечного цикла привел к тому, что если в [InPut] указать число из двух цифр, то случайное будет состоять всегда из одной цифры. Это я к тому, что вот это утверждение не совсем верно:
Цитата Peter ()
Самое занятное, что код в сообщении 24 был полностью правильным.
И 16 разрядов получается и все остальное тоже.

Кстати kop9000, если ты все еще мой пример юзаешь, то знай что он тоже не без косяка... Его корректировать надо так что Петр прав.
Цитата Peter ()
КАЖДАЯ строка кода должна быть тебе понятна


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата Peter ()
А что мешает сделать это на OR ?
А можно и вообще без них обойтись.

Нечего не мешает, и на OR можно. Я с AND пример бесконечного цикла привел к тому, что если в [InPut] указать число из двух цифр, то случайное будет состоять всегда из одной цифры. Это я к тому, что вот это утверждение не совсем верно:
Цитата Peter ()
Самое занятное, что код в сообщении 24 был полностью правильным.
И 16 разрядов получается и все остальное тоже.

Кстати kop9000, если ты все еще мой пример юзаешь, то знай что он тоже не без косяка... Его корректировать надо так что Петр прав.
Цитата Peter ()
КАЖДАЯ строка кода должна быть тебе понятна

Автор - anton
Дата добавления - 17 Октября 2016 в 14:08
mishemДата: Пн, 17 Октября 2016, 16:55 | Сообщение # 36
Эксперт форума
Вообще команду While в какое то время я вообще исключил из применения. Для того чтобы ее использовать нужно тщательно продумать все возможные варианты. Несколько раз просто попадал на вечный цикл. По этому по мере возможности стараюсь обходится без нее. :)

Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеВообще команду While в какое то время я вообще исключил из применения. Для того чтобы ее использовать нужно тщательно продумать все возможные варианты. Несколько раз просто попадал на вечный цикл. По этому по мере возможности стараюсь обходится без нее. :)

Автор - mishem
Дата добавления - 17 Октября 2016 в 16:55
PeterДата: Пн, 17 Октября 2016, 17:30 | Сообщение # 37
Админ NeoBook
Цитата anton ()
то вот это утверждение не совсем верно

Ошибка элементарная, не проще ли было указать на нее, чем пускать туман с бесконечными циклами?
А пример будет рабочий после маленькой корректировки (всего один символ)

Цитата mishem ()
Для того чтобы ее использовать нужно тщательно продумать все возможные варианты.

Возможные варианты нужно всегда продумывать.
А команда полезная и нужна именно в тех случаях, когда невозможно предсказать заранее длину цикла и она зависит от результата внутри цикла.
Но, в данном случае можно было и Loop применить, просто с While мне показалось короче..


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата anton ()
то вот это утверждение не совсем верно

Ошибка элементарная, не проще ли было указать на нее, чем пускать туман с бесконечными циклами?
А пример будет рабочий после маленькой корректировки (всего один символ)

Цитата mishem ()
Для того чтобы ее использовать нужно тщательно продумать все возможные варианты.

Возможные варианты нужно всегда продумывать.
А команда полезная и нужна именно в тех случаях, когда невозможно предсказать заранее длину цикла и она зависит от результата внутри цикла.
Но, в данном случае можно было и Loop применить, просто с While мне показалось короче..

Автор - Peter
Дата добавления - 17 Октября 2016 в 17:30
mishemДата: Пн, 17 Октября 2016, 18:43 | Сообщение # 38
Эксперт форума
Цитата Peter ()
Возможные варианты нужно всегда продумывать.

Да, но с этой командой особый случай. Нужно продумать ВСЕ возможные варианты. Что не всегда удается.

Цитата Peter ()
Но, в данном случае можно было и Loop применить, просто с While мне показалось короче.

Я не данный случай имел ввиду, а вообще.

Цитата Peter ()
А команда полезная и нужна

Я не говорю что она не нужна. Все команды важны, все команды нужны. Даже те которыми очень редко пользуются. :)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата Peter ()
Возможные варианты нужно всегда продумывать.

Да, но с этой командой особый случай. Нужно продумать ВСЕ возможные варианты. Что не всегда удается.

Цитата Peter ()
Но, в данном случае можно было и Loop применить, просто с While мне показалось короче.

Я не данный случай имел ввиду, а вообще.

Цитата Peter ()
А команда полезная и нужна

Я не говорю что она не нужна. Все команды важны, все команды нужны. Даже те которыми очень редко пользуются. :)

Автор - mishem
Дата добавления - 17 Октября 2016 в 18:43
antonДата: Пн, 17 Октября 2016, 18:57 | Сообщение # 39
Ветеран форума
Цитата mishem ()
А пример будет рабочий после маленькой корректировки (всего один символ)

Вот ща я не понял, какой такой символ заменить... Я увидел только то что вот эта команда не на своем месте:
SetVar "[Result]" "[R]"
Если изменить ее положение то код отрабатывает как задумано. Разве что вероятность получить 0 значительно выше чем другие значения, как вообщем и в оригинальном варианте.


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата mishem ()
А пример будет рабочий после маленькой корректировки (всего один символ)

Вот ща я не понял, какой такой символ заменить... Я увидел только то что вот эта команда не на своем месте:
SetVar "[Result]" "[R]"
Если изменить ее положение то код отрабатывает как задумано. Разве что вероятность получить 0 значительно выше чем другие значения, как вообщем и в оригинальном варианте.

Автор - anton
Дата добавления - 17 Октября 2016 в 18:57
mishemДата: Пн, 17 Октября 2016, 18:59 | Сообщение # 40
Эксперт форума
Ну раз так тема разрослась...
Хотите усложнение задачи? :)

Таким как kop9000 завтра может понадобится вывести случайное число из отрицательного числа или дроби. ;)


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеНу раз так тема разрослась...
Хотите усложнение задачи? :)

Таким как kop9000 завтра может понадобится вывести случайное число из отрицательного числа или дроби. ;)

Автор - mishem
Дата добавления - 17 Октября 2016 в 18:59
antonДата: Пн, 17 Октября 2016, 19:09 | Сообщение # 41
Ветеран форума
Цитата mishem ()
Таким как kop9000 завтра может понадобится вывести случайное число из отрицательного числа или дроби.

Не это все слишком просто... Надо чтонть поинтересней... ;)


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата mishem ()
Таким как kop9000 завтра может понадобится вывести случайное число из отрицательного числа или дроби.

Не это все слишком просто... Надо чтонть поинтересней... ;)

Автор - anton
Дата добавления - 17 Октября 2016 в 19:09
PeterДата: Пн, 17 Октября 2016, 20:07 | Сообщение # 42
Админ NeoBook
Цитата anton ()
Вот ща я не понял, какой такой символ заменить... Я увидел только то что вот эта команда не на своем месте:
SetVar "[Result]" "[R]"

Эта команда находится именно на своем месте, и только тут ей быть!
Поясню почему (и про ошибку тоже) после того, как прояснится вот это:
Цитата anton ()
Если изменить ее положение то код отрабатывает как задумано

И в какое место ее надо поместить?

Может я чего-то не догоняю...
Цитата anton ()
вероятность получить 0 значительно выше чем другие значения,

Вероятность получить ноль тем выше, чем меньше разрядность (количество циферок) предела диапазона.

Цитата mishem ()
Нужно продумать ВСЕ возможные варианты. Что не всегда удается.

Тогда будет как с сусликом.
:)
Цитата mishem ()
Все команды важны, все команды нужны. Даже те которыми очень редко пользуются.

Но, главное - чтобы было!
:)
А насчет While...
Попробуй повторить мой код через Loop (честно говоря, мне лениво)
Просто ради интереса - сравним длину скрипта.
;)
Мне кажется, что через Loop будет длиннее.

Добавлено (17 Октября 2016, 20:07)
---------------------------------------------
Цитата mishem ()
может понадобится вывести случайное число из отрицательного числа или дроби.

Насчет отрицательных чисел я уже приводил пример функции, все просто как в бане.
С дробями не пробовал, но тоже думаю возможно.


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата anton ()
Вот ща я не понял, какой такой символ заменить... Я увидел только то что вот эта команда не на своем месте:
SetVar "[Result]" "[R]"

Эта команда находится именно на своем месте, и только тут ей быть!
Поясню почему (и про ошибку тоже) после того, как прояснится вот это:
Цитата anton ()
Если изменить ее положение то код отрабатывает как задумано

И в какое место ее надо поместить?

Может я чего-то не догоняю...
Цитата anton ()
вероятность получить 0 значительно выше чем другие значения,

Вероятность получить ноль тем выше, чем меньше разрядность (количество циферок) предела диапазона.

Цитата mishem ()
Нужно продумать ВСЕ возможные варианты. Что не всегда удается.

Тогда будет как с сусликом.
:)
Цитата mishem ()
Все команды важны, все команды нужны. Даже те которыми очень редко пользуются.

Но, главное - чтобы было!
:)
А насчет While...
Попробуй повторить мой код через Loop (честно говоря, мне лениво)
Просто ради интереса - сравним длину скрипта.
;)
Мне кажется, что через Loop будет длиннее.

Добавлено (17 Октября 2016, 20:07)
---------------------------------------------
Цитата mishem ()
может понадобится вывести случайное число из отрицательного числа или дроби.

Насчет отрицательных чисел я уже приводил пример функции, все просто как в бане.
С дробями не пробовал, но тоже думаю возможно.

Автор - Peter
Дата добавления - 17 Октября 2016 в 20:07
mishemДата: Пн, 17 Октября 2016, 22:44 | Сообщение # 43
Эксперт форума
Я бы наверно как то так сделал.

Код
.Если InPut пустая или меньше или равно 0, нет смысла дальше продолжать
IfEx "[InPut]=[#34][#34] OR [InPut]<=0"
    Return
EndIf
.Задаем количество чисел с учетом чтобы не выдало 0, так как в результате должен быть хотя бы один символ
StrLen "[InPut]" "[StrLen]"
Random "[StrLen]-1" "[Result]"
SetVar "[Len]" "[Result]+1"
.Копируем первый символ из InPut и на его основе генерируем первое число.
SubStr "[InPut]" "1" "1" "[SubStr]"
Random "[SubStr]" "[Result]"
.Так как первое число уже есть, начинаем со второго. То что первый цикл сработает в любом случае не имеет значения.
Loop "2" "[Len]" "[i]"
    Random "9" "[Str]"
    .Если у нас всего одно число, результат + сгенерированное второе число будет больше изначального, выходим из цикла.
    If "[Result][Str]" ">" "[InPut]"
        ExitLoop
     Else
        .Или присваиваем результату новое значение
        SetVar "[Result]" "[Result][Str]"
        .и удаляем предыдущие начальные нули если такие имеются. В итоге если все нули, то один останется
        SubStr "[Result]" "1" "1" "[SubStr]"
        If "[SubStr]" "=" "0"
            StrDel "[Result]" "1" "1" "[Result]"
        EndIf
    EndIf
EndLoop


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеЯ бы наверно как то так сделал.

Код
.Если InPut пустая или меньше или равно 0, нет смысла дальше продолжать
IfEx "[InPut]=[#34][#34] OR [InPut]<=0"
    Return
EndIf
.Задаем количество чисел с учетом чтобы не выдало 0, так как в результате должен быть хотя бы один символ
StrLen "[InPut]" "[StrLen]"
Random "[StrLen]-1" "[Result]"
SetVar "[Len]" "[Result]+1"
.Копируем первый символ из InPut и на его основе генерируем первое число.
SubStr "[InPut]" "1" "1" "[SubStr]"
Random "[SubStr]" "[Result]"
.Так как первое число уже есть, начинаем со второго. То что первый цикл сработает в любом случае не имеет значения.
Loop "2" "[Len]" "[i]"
    Random "9" "[Str]"
    .Если у нас всего одно число, результат + сгенерированное второе число будет больше изначального, выходим из цикла.
    If "[Result][Str]" ">" "[InPut]"
        ExitLoop
     Else
        .Или присваиваем результату новое значение
        SetVar "[Result]" "[Result][Str]"
        .и удаляем предыдущие начальные нули если такие имеются. В итоге если все нули, то один останется
        SubStr "[Result]" "1" "1" "[SubStr]"
        If "[SubStr]" "=" "0"
            StrDel "[Result]" "1" "1" "[Result]"
        EndIf
    EndIf
EndLoop

Автор - mishem
Дата добавления - 17 Октября 2016 в 22:44
PeterДата: Вт, 18 Октября 2016, 00:16 | Сообщение # 44
Админ NeoBook
Цитата mishem ()
Я бы наверно как то так сделал

В общем-то понятно.
Можно и так...
Формально "длина" та же самая получается.

Цитата mishem ()
.и удаляем предыдущие начальные нули если такие имеются. В итоге если все нули, то один останется

Только зачем специально удалять каждый раз первый ноль, если его можно было просто не записывать?

Впрочем, у каждого программера свой стиль, и главное в этом деле - чтобы суслик остался цел.
:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата mishem ()
Я бы наверно как то так сделал

В общем-то понятно.
Можно и так...
Формально "длина" та же самая получается.

Цитата mishem ()
.и удаляем предыдущие начальные нули если такие имеются. В итоге если все нули, то один останется

Только зачем специально удалять каждый раз первый ноль, если его можно было просто не записывать?

Впрочем, у каждого программера свой стиль, и главное в этом деле - чтобы суслик остался цел.
:)

Автор - Peter
Дата добавления - 18 Октября 2016 в 00:16
mishemДата: Вт, 18 Октября 2016, 00:51 | Сообщение # 45
Эксперт форума
Цитата Peter ()
Только зачем специально удалять каждый раз первый ноль, если его можно было просто не записывать?

Можно подкорректировать. Но вопрос стоял в длине кода. :)

Если входное значение будет 1 или от 1 до 9, то 0 как бы нужен.
Нужно просто условие добавить что если результат состоит больше чем один символ, то 0 удалить. Но и здесь тоже дальше опять же нужно смотреть. Результат может состоять и из 10 чисел, но где уверенность что все 10 не будут 0? :)
По факту это вроде как самое простое решение. В принципе как не крути, выше эту проверку поставить, ниже, все равно она нужна. Только если выше ставить, больше строк кода может получится.

Можно конечно вообще в самом конце поставить и в цикле перебрать все начальные цифры пока значение не будет больше 0 удалять их.
Короче вариантов море....
Кому надо, тот пускай и думает. :D


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
Сообщение
Цитата Peter ()
Только зачем специально удалять каждый раз первый ноль, если его можно было просто не записывать?

Можно подкорректировать. Но вопрос стоял в длине кода. :)

Если входное значение будет 1 или от 1 до 9, то 0 как бы нужен.
Нужно просто условие добавить что если результат состоит больше чем один символ, то 0 удалить. Но и здесь тоже дальше опять же нужно смотреть. Результат может состоять и из 10 чисел, но где уверенность что все 10 не будут 0? :)
По факту это вроде как самое простое решение. В принципе как не крути, выше эту проверку поставить, ниже, все равно она нужна. Только если выше ставить, больше строк кода может получится.

Можно конечно вообще в самом конце поставить и в цикле перебрать все начальные цифры пока значение не будет больше 0 удалять их.
Короче вариантов море....
Кому надо, тот пускай и думает. :D

Автор - mishem
Дата добавления - 18 Октября 2016 в 00:51
PeterДата: Вт, 18 Октября 2016, 00:59 | Сообщение # 46
Админ NeoBook
Цитата mishem ()
но где уверенность что все 10 не будут 0?

Код
If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf


Хлтя, ты прав:
Цитата mishem ()
Кому надо, тот пускай и думает.

:)


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата mishem ()
но где уверенность что все 10 не будут 0?

Код
If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf


Хлтя, ты прав:
Цитата mishem ()
Кому надо, тот пускай и думает.

:)

Автор - Peter
Дата добавления - 18 Октября 2016 в 00:59
antonДата: Вт, 18 Октября 2016, 08:14 | Сообщение # 47
Ветеран форума
Цитата Peter ()
И в какое место ее надо поместить?

Код

SetVar "[Result]" "0"
SetVar "[R]" "0"
SetVar "[InPut]" "99"
StrLen "[InPut]" "[Len]"
Random "[Len]" "[Len]"
SetVar "[i]" "1"
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

  Random "9" "[Num]"
  If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf
  
  SetVar "[Result]" "[R]"
  
  Math "[i]+1" "0" "[i]"
EndWhile
ClearVariables "[i],[Len],[Num],[R]"


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата Peter ()
И в какое место ее надо поместить?

Код

SetVar "[Result]" "0"
SetVar "[R]" "0"
SetVar "[InPut]" "99"
StrLen "[InPut]" "[Len]"
Random "[Len]" "[Len]"
SetVar "[i]" "1"
WhileEx "([R] <= [InPut]) AND ([i] <= [Len])"

  Random "9" "[Num]"
  If "[R]" ">" "0"
    SetVar "[R]" "[R][Num]"
   Else
    If "[Num]" ">" "0"
      SetVar "[R]" "[Num]"
    EndIf
  EndIf
  
  SetVar "[Result]" "[R]"
  
  Math "[i]+1" "0" "[i]"
EndWhile
ClearVariables "[i],[Len],[Num],[R]"

Автор - anton
Дата добавления - 18 Октября 2016 в 08:14
PeterДата: Вт, 18 Октября 2016, 13:44 | Сообщение # 48
Админ NeoBook
Цитата anton ()
SetVar "[Result]" "[R]"

Math "[i]+1" "0" "[i]"

В этом случае в [Result] может оказаться "перебор".
Помещать результат в Result можно только после проверки условия запуска цикла, для этого и существует переменная (буфер) [R], иначе можно было бы прямо в Result


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата anton ()
SetVar "[Result]" "[R]"

Math "[i]+1" "0" "[i]"

В этом случае в [Result] может оказаться "перебор".
Помещать результат в Result можно только после проверки условия запуска цикла, для этого и существует переменная (буфер) [R], иначе можно было бы прямо в Result

Автор - Peter
Дата добавления - 18 Октября 2016 в 13:44
antonДата: Вт, 18 Октября 2016, 15:35 | Сообщение # 49
Ветеран форума
Цитата Peter ()
В этом случае в [Result] может оказаться "перебор".

Блин, точно, проглядел...


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
 
Сообщение
Цитата Peter ()
В этом случае в [Result] может оказаться "перебор".

Блин, точно, проглядел...

Автор - anton
Дата добавления - 18 Октября 2016 в 15:35
PeterДата: Чт, 20 Октября 2016, 04:56 | Сообщение # 50
Админ NeoBook
Цитата anton ()
проглядел...

Это потому-что не проанализировал работу цикла.
Но, я тут тоже "дал маху", начиная думать о Loop, а потом перключившись на While.
Ошибка была в том, что первое присваивание значения результату "холостое" 0, т.е. без расчета случайного значения, которое анализируется только при последующем срабатывании цикла, и поэтому счетчик цикла (переменная [i]) должен"отставать" и начинаться не с 1, а с нуля:
Код
SetVar "[i]" "0"

Начальное присваивание (Result и R = 0) - "мера безопасности" и должно быть всегда, чтобы был вразумительный результат, иначе могут быть всякие сюрпризы в зависимости от того, как устроен последующий скрипт, обрабатывающий этот результат.
В этой связи DefineVar - очень полезная штуковина!


- А вам какую операционку поставить - экспи, семерку или висту?
- Это ты сейчас о чем?
- Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный?
- Ну, конечно, надежный!
- Вот, значит - экспи, без вопросов! Сейчас сделаем...

(Улицы разбитых фонарей, сезон 10, серия 17)

Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!


При модном втюхе модоподдающимся начинает нравиться
 
Сообщение
Цитата anton ()
проглядел...

Это потому-что не проанализировал работу цикла.
Но, я тут тоже "дал маху", начиная думать о Loop, а потом перключившись на While.
Ошибка была в том, что первое присваивание значения результату "холостое" 0, т.е. без расчета случайного значения, которое анализируется только при последующем срабатывании цикла, и поэтому счетчик цикла (переменная [i]) должен"отставать" и начинаться не с 1, а с нуля:
Код
SetVar "[i]" "0"

Начальное присваивание (Result и R = 0) - "мера безопасности" и должно быть всегда, чтобы был вразумительный результат, иначе могут быть всякие сюрпризы в зависимости от того, как устроен последующий скрипт, обрабатывающий этот результат.
В этой связи DefineVar - очень полезная штуковина!

Автор - Peter
Дата добавления - 20 Октября 2016 в 04:56
kop9000Дата: Сб, 29 Июля 2017, 05:50 | Сообщение # 51
Ветеран форума
А как вам такой вариант

Код

SetVar "[d]" ""

Loop "1" "16" "[lol]"
SetVar "[s[lol]]" ""
EndLoop

SetVar "[InPut]" "9007199254740991"

Random "16" "[rand]"

While "[rand]" "=" "0"
Random "16" "[rand]"
EndWhile

Loop "1" "[rand]" "[lol]"
Random "9" "[s[lol]]"
While "[s[lol]]" "=" "0"
Random "9" "[s[lol]]"
EndWhile
SetVar "[d]" "[d][s[lol]]"
EndLoop

If "[d]" ">" "[InPut]"
StrDel "[d]" "15" "1" "[d]"
EndIf


Сообщение отредактировано
kop9000 - Сб, 29 Июля 2017, 05:50
 
СообщениеА как вам такой вариант

Код

SetVar "[d]" ""

Loop "1" "16" "[lol]"
SetVar "[s[lol]]" ""
EndLoop

SetVar "[InPut]" "9007199254740991"

Random "16" "[rand]"

While "[rand]" "=" "0"
Random "16" "[rand]"
EndWhile

Loop "1" "[rand]" "[lol]"
Random "9" "[s[lol]]"
While "[s[lol]]" "=" "0"
Random "9" "[s[lol]]"
EndWhile
SetVar "[d]" "[d][s[lol]]"
EndLoop

If "[d]" ">" "[InPut]"
StrDel "[d]" "15" "1" "[d]"
EndIf

Автор - kop9000
Дата добавления - 29 Июля 2017 в 05:50
Форум NeoBook » Всё о программе NeoBook » Общие вопросы по NeoBook » рандомизация числа больше 9007199254740990 не работает
Страница 2 из 2«12
Поиск: