|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Деление числа на НЕ равные части
Подскажите как разделить число на не равные части?
Если конкретней, то есть массив размерности N, нужно сгенирировать массив размерности M, так, чтобы сумма значений элементов массивов была равна, но значения, в большинстве случаев, не совпадали. |
#2
|
||||
|
||||
Код:
var n0, n1, n2: Integer; begin n0:=79; n1:=n0 div 2; n2:=n0-n1; Memo1.Lines.Add(IntToStr(n0)); Memo1.Lines.Add(IntToStr(n1)); Memo1.Lines.Add(IntToStr(n2)); Memo1.Lines.Add(IntToStr(n1+n2)); end; Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Это не совсем то. Видимо не совсем правильно поставил вопрос.
Например есть массив целых чисел - (100, 256,13, 78), сумма значений элементов = 447. Задача - получить новый массив, задоной размерности n, сумма значений которого будет равна сумме значений первого массива. Например (50,50,203,69,75). Т.е. по сути задача сводится к тому, чтобы разделить 447 на n, случайных частей. В примере NumLock-a числа получаются очень близкими к исходным значениям. |
#4
|
||||
|
||||
Код:
begin edit1.Text:='447'; randomize; edit2.Text:=inttostr(random(strtoint(edit1.Text))); edit3.Text:=inttostr(random(strtoint(edit1.Text)-strtoint(edit2.Text))); edit4.Text:=inttostr(random(strtoint(edit1.Text)-strtoint(edit2.Text)+strtoint(edit3.Text))); edit5.Text:=inttostr(random(strtoint(edit1.Text)-strtoint(edit2.Text)+strtoint(edit3.Text)-strtoint(edit4.Text))); end; |
#5
|
||||
|
||||
Цитата:
|
#6
|
||||
|
||||
ой...
это же я... |