![]() |
разделить число примерно поровну.
Здравствуйте.
Сразу начну с примера. Есть число 80. его нужно разделить на заданное n частей. Числа должны быть кратны 10. Например число 80 разбить на 3 части. первая часть 30, вторая часть 30, третья часть 20. То есть примерно поровну. Или то же число 80 разбить на 5 частей. 1-я 20, 2-я 20, 3-я 20, 4-я 10, 5-я 10. Надеюсь смысл понятен. И нужно реализовать на C++. Дано число которое нужно разбить, дано количество разбиений n, и записать эти все части в массив. Заранее спасибо! |
Дано число C, частей n
ti = ]C/n[ с округлением до целых десятков и так в каждой итерации цикла Все остальное самостоятельно. |
Цитата:
Если разделить 80 на 3 то мы получим 26,66. Потом из полученного выделить часть, кратную 10. Мы получим 20. Затем мы просто умножим 20 на 3 и получим 60. И из 80 вычтем 60 и получим 10. И в принципе сработает ваше первое разбиение: 20,20,20,10. Если пойти тем же путём и 80 разделить на 5 будет 16. Выделяем целую часть, получаем 10. Умножаем на 5 получаем 50. Из 80 вычитаем 50 получаем 30. И части строятся криво :( 10,10,10,10,10,30 Может стоит потом как то поработать с остатком. К примеру если он больше первых частей то нужно его как-то поделить и перебросить на первые слагаемые. Цитата:
|
Можно по подробней а то не могу разобраться.
Это нужно цикл сделать такой чтобы считал с округлением кратным 10? |
Цитата:
Цитата:
Цитата:
Будут наработки приходите. Вся суть алгоритма расписана. "Жевать" не имеет смысла. Цитата:
(думай своей головой, а не нашей) |
А что если такую систему:
80 на 3 части 80/3 = 26... ->30 //округлить до 10. 80-30 = 50 50/3 = 16... ->20 50-20 = 30 // Останавливаемся потому что разбили на три части и выходит что 30 20 30 части. 80 на 5 частей. 80/5 = 16... -> 20 80-20 = 60 60/5 = 12... -> 20 60-20 = 40 40/5 = 8... -> 10 40-10 = 30 30/5 = 5... -> 10 30-10 = 20 //Останавливаемся потому что разбили на пять частей и вышло 20 20 10 10 20 |
Цитата:
Или для верность надо еще попробовать на 7 разделить? |
попробовал...
получается... 80/7 = 11... -> 20 80-20=60 60/7 = 8... -> 10 60-10=50 50/7= 7... ->10 50-10=40 40/7=5... -> 10 40-10=30 30/7= 4... -> 10 30-10 = 20 20/7= 2... ->10 20-10 = 10 // останавливаемся и получаем 20 10 10 10 10 10 10 |
Цитата:
|
Время: 18:51. |
Время: 18:51.
© OSzone.net 2001-