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

    +108

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    ...
    while (true)
    {
         if(i > 5 || SourceNumber == Math.Floor(SourceNumber)) break;
         ...
         i++;
    }
    ...

    Запостил: Мартин, 15 Ноября 2010

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

    • Проверка на целое число ... и что тут такого ?
      Ответить
      • человечка смущает "Бесконечный цикл", с условием выхода в самом теле цикла...
        Ответить
        • может быть и так, но кто знает, что скрывается за 5ой строкой. вдруг там ещё куча логики и несколько break'ов, которые наверх (в while) не перенести.
          Ответить
          • логики там нет. одни вычисления с вывод информации. и бряков тоже.
            Ответить
    • конечно православно написать условие в самом while, но это не говно, а подход
      Ответить
    • Ставя true в условие выхода, человек пытается оставить себе пути отхода, если вдруг логика начнёт валится и нужно будет досрочно вылить из цикла. Лично я не любитель такого дела - другому человеку сложнее понять суть цикла, особенно с магической пятёркой.

      Без контекста сложно что-то говорить, но это что-то похожее на реализацию foreach через while, что не прибавляет балов данному подходу, учитывая найденные особенности..
      Ответить
      • int i, BaseSystem; // Счетчик циклов, степень
                    decimal SourceNumber; // Исходное число в DEC
                    i = 0;
                    SourceNumber = Convert.ToDecimal(Console.ReadLine());
                    BaseSystem = Convert.ToInt16(Console.ReadLine());
                    while (true)
                    {
                        if(i > 5 || SourceNumber == Math.Floor(SourceNumber)) break;
                        Console.WriteLine(SourceNumber + " умножаем на " + BaseSystem + ", получаем " + SourceNumber * BaseSystem);
                        SourceNumber *= BaseSystem;
                        i++;
                    }
        Ответить
        • О, так картина намного полнее, добавилось ещё лишнее умножение и теперь уже точно нет шансов понять почему 5-ть :)
          Ответить
          • Да просто пять это количество циклов после которого выполнение прервется независимо от второго условия. Предел точности чтоли?
            Какая-то матпрожка коими в избытке кормят в школе и на первых курсах универа...
            Ответить
    • ну переодически юзаю конструкцию и нормально)
      do{
      ....
      }while(false);
      Ответить
    • basic-86 style:
      10 REM some code
      20 ...
      30 IF ( i > 5 ) THEN GOTO 60
      40 i = i +1
      50 GOTO 10
      60 REM continue...
      --
      откуда корни... а вы всё while(true)... while(false)
      Ответить

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