|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
массив сл чисел , с заданной суммой элементов
Помогите, пожалуйста! Нужно создать одномерный массив, 20 значений, заполненный случайнымми числами, с выполнением условия, чтоб сумма элементов была равна 1200. массив не может содержать нули, значения могут повторяться. Как создать массив и заполнить я знаю, подскажите хотя бы алгоритм
|
#2
|
|||
|
|||
Генерируешь 19 чисел случайным образом, а 20-е высчитываешь как 1200 - сумма первых 19-ти. Все. При вычислении 20-го проверяешь, что если оно равно 0, то, соответсвенно, отнимаешь 1 от 19-го и 20-е ставишь в 1.
Сама генерация - с помощью функции Random^ A[i] := Random(100) + 1; // +1 - что бы гарантированно <> 0. |
#3
|
||||
|
||||
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
Цитата:
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 03.04.2009 в 22:00. |
#5
|
|||
|
|||
Читай внимательно - 20 чисел! Итого 20 * 100 = 2000 > 1200!!!
|
#6
|
|||
|
|||
я сделал!!!!
a[1]:=random(1200-19)+1; //макс элемент, остальные могут быть только единицы sum:=a[1]; b:=(1200-19)+1-a[1]; for i:=2 to 19 do begin a[i]:=random(b)+1; b:=b+1-a[i]; sum:=sum+a[i]; end; a[20]:=1200-sum; |
#7
|
||||
|
||||
Цитата:
Вполне допустима ситуация когда будет сгенерирован ряд начинающийся с 1999,2 в итоге на втором элементе имеем переполнение. С чего появилась цифра 100 в вашем примере мне непонятно. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
|||
|
|||
причем числа не могут быть отрицательными
|