![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() ![]() это же я... ![]() ![]() |