Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2010, 17:07   #1
Renge
Пользователь
 
Аватар для Renge
 
Регистрация: 07.12.2010
Сообщений: 35
По умолчанию Проблема со случайными числами

Собственно, вот, вместе с заданием:
Код:
BEGIN
  Randomize;
  kol:=0;
  Repeat
    ClrScr;
    a:=0;
    S1:=0;
    Writeln ('Имеется число S0. Генерируются случайные число Х в диапозоне от А до В. 1. Сл. чисел должно оказаться не меньше N.');
    Writeln ('2. Генерация продолжается до тех, пока их сумма S1 не станет больше либо равной');
    Writeln ('S0. 3. Генерация не должна продолжатся, когда S1 стала больше S0. Числа S0 И N вводятся с экрана. Вывести на экран:');
    Write ('Укажите S0 ');
    Readln (S0);
    Write ('Укажите N');
    Readln (N);
    b:=S0;
    Repeat
     x:=Random(b-a+1)+a;
     kol:=kol+1;
     S1:=S1+x;
     Write (x, ' ');
    Until ((S1>S0) or (S1=S0)) and (kol>n)
    Until ReadKey=#27
END.
Проблема в том, что 3 условие не хочет выполнятся. Выводится не одно число, которое осуществляет S1>S0, а больше. Это за счет того, что чисел выводится не меньше N. Не понимаю как это совместить, чтобы выводилось чисел не менее N, но при этом одно число осуществляло неравенство.

Последний раз редактировалось Stilet; 24.12.2010 в 20:51. Причина: Неправильна описала проблему
Renge вне форума Ответить с цитированием
Старый 24.12.2010, 17:32   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Так у вас здесь и ошибка
Цитата:
Код:
a:=0; 
Repeat 
     x:=Random(b-a+1)+a; 
     S1:=S1+x; 
     Write (x, ' '); 
    Until (S1<S0) or (S1=S0)
Вот и смотрите! a = 0! S0 допустим 5
тогда s1 = Random(5-0+1)+0;
Наврятли сразу выдаст максимальное 6;
Пусть 3;
3 < 6! В repeat код выполняется пока условие ложно!
а 3 < 6 это истина вот и выводит вам одно число!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 24.12.2010, 17:35   #3
Renge
Пользователь
 
Аватар для Renge
 
Регистрация: 07.12.2010
Сообщений: 35
По умолчанию

Каюсь-каюсь, с этим делом я уже справилась и отредактировала сообщение, работать другое не хочет.
Renge вне форума Ответить с цитированием
Старый 24.12.2010, 18:04   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Объясните пожалуйста!
Цитата:
Не понимаю как это совместить, чтобы выводилось чисел не менее N, но при этом одно число осуществляло неравенство.
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнение массива случайными числами katena88 Общие вопросы C/C++ 3 28.10.2010 14:28
XML заполнение ячеек случайными числами. ViNcHeStEr Помощь студентам 0 13.10.2009 05:49
Заполнение массива случайными числами dee_lv Общие вопросы C/C++ 7 08.12.2008 21:22
Заполнение массива случайными числами Roomper Помощь студентам 4 12.05.2008 22:34
Заполнить массив случайными числами forumu Общие вопросы Delphi 13 03.12.2007 22:11