1. 1C / Говнокод #21594

    −97

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    Функция ПроставитьНули (ЧислоНулей)
    	
    Если ЧислоНулей = 7 Тогда 	
    СтрокаНулей = "000000";	
    ИначеЕсли ЧислоНулей = 6 Тогда 	
    СтрокаНулей = "00000";		
    ИначеЕсли ЧислоНулей = 5 Тогда 		
    СтрокаНулей = "0000";		
    ИначеЕсли ЧислоНулей = 4 Тогда 		
    СтрокаНулей = "000";		
    ИначеЕсли ЧислоНулей =3 Тогда 		
    СтрокаНулей = "00";		
    ИначеЕсли ЧислоНулей =2 Тогда 		
    СтрокаНулей = "0";	
    ИначеЕсли ЧислоНулей =1 Тогда
    СтрокаНулей = "0";
    КонецЕсли;
    
    Возврат СтрокаНулей;
    		
    КонецФункции

    Разгребал завалы от предшественника. Случайно наткнулся.
    Правильно было бы так:
    Функция ПроставитьНули (ИсходноеЧисло, ЧислоНулей)
    Возврат Формат(ИсходноеЧисло, "ЧЦ="+ЧислоНулей+"; ЧВН=; ЧГ=0");
    КонецФункции

    Запостил: Vince, 28 Октября 2016

    Комментарии (12) RSS

    • "0" * ЧислоНулей
      Ответить
    • СтрокаНулей = Лев("0000000000", ЧислоНулей)
      Ответить
    • показать все, что скрытом-да

      курица -- не птица
      1С-ник -- не программист
      Ответить
    • Млин.. Вспоминаю как один товарищ делал это на моих глазах..
      Ответить
    • Функция ПроставитьНули (ЧислоНулей)
      	
      Если ЧислоНулей = 0 Тогда 	
      СтрокаНулей = "";	
      ИначеЕсли ЧислоНулей % 2 = 1 Тогда 	
      СтрокаНулей =  ПроставитьНули(ЧислоНулей - 1) + "0";		
      Иначе
      СтрокаНулей = ПроставитьНули(ЧислоНулей / 2);
      СтрокаНулей = СтрокаНулей + СтрокаНулей;
      КонецЕсли;
      
      Возврат СтрокаНулей;
      		
      КонецФункции
      Ответить
      • Добавим хвостовой рекурсии:
        Функция ПроставитьНули(ЧислоНулей, СтрокаНулей)
            Если ЧислоНулей = 0 Тогда
                Возврат СтрокаНулей
            ИначеЕсли ЧислоНулей % 2 = 1 Тогда
                Возврат ПроставитьНули(ЧислоНулей - 1, СтрокаНулей + "0")
            Иначе
                Возврат ПроставитьНули(ЧислоНулей / 2, СтрокаНулей + СтрокаНулей)
            КонецЕсли
        КонецФункции
        
        Функция ПроставитьНули(ЧислоНулей)
            Возврат ПроставитьНули(ЧислоНулей, "")
        КонецФункции
        Ответить

    Добавить комментарий