| 
    
        
     
     | 
    
    
  | 
Задачка: в 1С Разбить число на примерно равные ЦЕЛЫЕ числа | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        elena_schleht    
     28.06.13 
            ✎
    14:38 
 | 
         
        Нужно придумать механизм, который будет разбивать некую сумму на количество месяцев, так чтобы помесячные суммы были целыми числами т.е. без запятой.
  
        Пример: сумма - 10000 кол-во мес. - 24 Итого: 10000=(16 раз по 417)+(8 раз по 416) Если же 10000 поделить на 24 месяца, то получим 416,6666666666667 в месяц.  | 
|||
| 
    1
    
        Aprobator    
     28.06.13 
            ✎
    14:40 
 | 
         
        Деление с остатком.     
         | 
|||
| 
    2
    
        newfantom    
     28.06.13 
            ✎
    14:40 
 | 
         
        кури распределение затрат     
         | 
|||
| 
    3
    
        Aprobator    
     28.06.13 
            ✎
    14:41 
 | 
         
        *упал под стол*     
         | 
|||
| 
    4
    
        Alpen906    
     28.06.13 
            ✎
    14:41 
 | 
         
        Делим на цело на количество месяцев. Остаток прибавляем к последнему месяцу.     
         | 
|||
| 
    5
    
        kosts    
     28.06.13 
            ✎
    14:41 
 | 
         
        Всю сумму разделить на 24.
  
        Округлить, присвоить первому месяцу. Уменьшить период на один. Перейти к первому шагу.  | 
|||
| 
    6
    
        АнжелаДэвис    
     28.06.13 
            ✎
    14:42 
 | 
         
        кредитный калькулятор?     
         | 
|||
| 
    7
    
        elena_schleht    
     28.06.13 
            ✎
    14:43 
 | 
         
        (6) типо да ))     
         | 
|||
| 
    8
    
        Жан Пердежон    
     28.06.13 
            ✎
    14:44 
 | 
         
        FLOOR(1000/24) = 416
  
        10000 - 416* 24 = 16 итого 16 * 417 + (24-16)* 416  | 
|||
| 
    9
    
        sda553    
     28.06.13 
            ✎
    14:46 
 | 
         
        Я эту задачку решаю всегда когда шторку на кючки вешаю
  
        Решение, 1 отрезок Делим длину на количество отрезков, если дробная часть больше или равна 0.5 то округляем до верхнего иначе до нижнего 2 отрезок Делим оставшуюся длин (длина - первый отрезок) на (количество-1) если дробная часть больше или равна 0.5 то округляем до верхнего иначе до нижнего 3 отрезок Делим оставшуюся длин (длина - первый отрезок-второй отрещок) на (количество-2) если дробная часть больше или равна 0.5 то округляем до верхнего иначе до нижнего Последний отрезов =Длина-Все отрезки до последнего  | 
|||
| 
    10
    
        acsent    
     28.06.13 
            ✎
    14:48 
 | 
         
        (4) не совсем так. Если 100 месяцев и остаток 49, то в последнем будет на 49 больше     
         | 
|||
| 
    11
    
        АнжелаДэвис    
     28.06.13 
            ✎
    14:49 
 | 
         
        (9) у шторки должны быть пришиты петельки для того, чтобы не решать каждый раз задачку     
         | 
|||
| 
    12
    
        NcSteel    
     28.06.13 
            ✎
    14:50 
 | 
         
        (0) В любой типовой есть необходимая процедура.     
         | 
|||
| 
    13
    
        NS    
     28.06.13 
            ✎
    14:54 
 | 
         
        Для а=0 по колво-1 цикл
  
        дельта=окр(сумма/(колво-а),0); Сообщить(дельта); Сумма=Сумма-дельта; КонецЦикла;  | 
|||
| 
    14
    
        sda553    
     28.06.13 
            ✎
    14:59 
 | 
         
        (11) Так в том то и дело - петелек 100 а крючков 37
  
        вот и решай задачу о разбиении на примерно одинаковые 36 отрезков  | 
|||
| 
    15
    
        acsent    
     28.06.13 
            ✎
    15:10 
 | 
         
        остаток нужно по единичке раскидывать по порядку или случайно можно     
         | 
|||
| 
    16
    
        elena_schleht    
     28.06.13 
            ✎
    15:13 
 | 
         
        (13) Вариант прикольный, но суммы не сортируются т.е. сначала идет 9 раз по 417 потом 416 и идет чередование 417 416
  
        (15) по порядку сначала чуть больше потом чуть меньше  | 
|||
| 
    17
    
        acsent    
     28.06.13 
            ✎
    15:14 
 | 
         
        (16) целыми же. Меньше 1 нельзя. И остатка на всех не хватит     
         | 
|||
| 
    18
    
        NS    
     28.06.13 
            ✎
    15:16 
 | 
         
        (16) А отсортировать это очень тяжело?
  
        Если вместо окр() сделать цел() - то будут отсортированы.  | 
|||
| 
    19
    
        NS    
     28.06.13 
            ✎
    15:16 
 | 
         
        Если нужно сначала больше, тогда цел(0.999999999999+)     
         | 
|||
| 
    20
    
        Serg_1960    
     28.06.13 
            ✎
    15:18 
 | 
         
        Жан уже дал ответ в (8) Об чём далее спорим? О смысле жизни без петелек на шторах?
  
        "Общество, в котором нет цветовой дифференциации штанов, лишено цели"(Кин-дза-за)  | 
|||
| 
    21
    
        Жан Пердежон    
     28.06.13 
            ✎
    15:18 
 | 
         
        кстати, фотки нет, зачем помогаем, что за беспредел?)     
         | 
|||
| 
    22
    
        Serg_1960    
     28.06.13 
            ✎
    15:20 
 | 
         
        Вот что пятница делает - совсем распоясались, приличия забыли. Без фотки - и помогают :)     
         | 
|||
| 
    23
    
        elena_schleht    
     28.06.13 
            ✎
    15:20 
 | 
         
        (21) от парни... Им ток фотку дай...
  
        Вы только за фотки помогаете? ))  | 
|||
| 
    24
    
        elena_schleht    
     28.06.13 
            ✎
    15:26 
 | 
         
        Может как нибудь позже и поставлю, если будете себя хорошо вести )))
  
        Всем спасибо! Выбрала такое решение: Для а=0 по СрокКредитования-1 цикл ДатаНач = ДобавитьМесяц(ДатаНач, 1); НоваяСтрока = Объект.ГрафикПогашения.Добавить(); НоваяСтрока.Дата = ДобавитьМесяц(ДатаНач, -1); СуммаПлатежа = Цел(0.999999999999+Сумма/(СрокКредитования-а)); НоваяСтрока.СуммаПлатежа = СуммаПлатежа; Сумма=Сумма - СуммаПлатежа; КонецЦикла;  | 
|||
| 
    25
    
        Aprobator    
     28.06.13 
            ✎
    15:30 
 | 
        
      | 
|||
| 
    26
    
        Aprobator    
     28.06.13 
            ✎
    15:31 
 | 
         
        хотя 1 цикл лишний. Остаток не может быть больше количества ОбъектовРаспределения.     
         | 
|||
| 
    27
    
        Lama12    
     28.06.13 
            ✎
    15:37 
 | 
         
        (0)А фотки так и нет.
  
        И задача решена. Да и задача-от примитивная. :(  | 
|||
| 
    28
    
        Aprobator    
     28.06.13 
            ✎
    15:41 
 | 
         
        (27) запишем долг на счет ТС.     
         | 
|||
| 
    29
    
        acsent    
     28.06.13 
            ✎
    15:42 
 | 
         
        последний цикл можно так
  
        Для ИндексМассива = 1 По остаток Цикл  | 
|||
| 
    30
    
        elena_schleht    
     28.06.13 
            ✎
    15:42 
 | 
         
        (28) за мной не заржавеет!     
         | 
|||
| 
    31
    
        acsent    
     28.06.13 
            ✎
    15:43 
 | 
         
        (28) через пару недель не поймешь что это такое     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |