1. C++ / Говнокод #2899

    +54.6

    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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    #include <iostream>
    
    class TerVer {
    public:
      short d1, d2, d3, d4;
      short totalCounter, goodCounter;
      bool DoneInc;
      TerVer(): d1(1), d2(0), d3(0), d4(0), totalCounter(1), goodCounter(0), DoneInc(false) {}
      bool IsGood() {
        return (
          (d1==d2 && d1!=d3 && d1!=d4 && d3!=d4) ||
          (d1==d3 && d1!=d2 && d1!=d4 && d2!=d4) ||
          (d1==d4 && d1!=d2 && d1!=d3 && d2!=d3) ||
    
          (d2==d3 && d2!=d1 && d2!=d4 && d1!=d4) ||
          (d2==d4 && d2!=d1 && d2!=d3 && d1!=d3) ||
    
          (d3==d4 && d3!=d1 && d3!=d2 && d1!=d2)
          ) ? true : false;
      }
      void Inc() {
        d4++; 
        if(d4>9) { d4=0; d3++; if(d3>9) {d3=0; d2++; if(d2>9) { d2=0; d1++; if(d1>9) DoneInc = true; } } }
        if (!DoneInc) { totalCounter++; if (IsGood()) goodCounter++; }
      }
    };
    
    int main() {
      TerVer z;
      while(!z.DoneInc) {
        z.Inc();
      }
      cout << z.goodCounter << " / " << z.totalCounter << " = " << (double)z.goodCounter/z.totalCounter << endl;
    
      return 0;
    }

    Найти вероятность того, что в случайном четырехзначном числе ровно две цифры совпадают.
    Вот что бывает, когда лень думать.

    Запостил: elmigranto, 30 Марта 2010

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

    • Опять лаба, школьник-кун?
      -1
      Ответить
    • Действительно говнокод:
      IsGood() должна быть const,
      d1, d2, d3, d4, IsGood() - private.
      И функцию печати тоже надо было засунуть в класс...
      Ответить
      • Фигня. На лабе думать некогда. ;)
        Ответить
        • вот из таких как ты и вырастают говнокодеры
          Ответить
          • Ты где видел не говнокодящих школьников, умник?
            Может ты в школе неговнокодил?
            Ответить
            • Раз минусует. Видимо вшколе не говнокодил... :p
              Ответить
              • Он в школе скорее всего даже мышку недержал... :p
                Ответить
    • <iostream.h> считает gcc.

      аутпут приложения удивляет: 3888 / 9000 = 0.432

      у тебя не приняли лабу, да?
      Ответить
      • Правильно таки <iostream>
        Компилируйте код на С++ с помощью g++ - избежите многих проблем.
        Ответить
        • $ g++
          i686-apple-darwin9-g++-4.0.1: no input files

          $ head -n 1 text.cpp
          #include <iostream>

          $ g++ text.cpp
          text.cpp: In function ‘int main()’:
          text.cpp:33: error: ‘cout’ was not declared in this scope
          text.cpp:33: error: ‘endl’ was not declared in this scope

          ЧЯДНТ?
          Ответить
          • $ head -n 1 text.cpp
            #include <iostream.h>

            $ g++ text.cpp
            In file included from /usr/include/c++/4.0.0/backward/iostream.h:31,
            from text.cpp:1:
            /usr/include/c++/4.0.0/backward/backward_warning.h:32:2: [........]

            $ ./a.out
            3888 / 9000 = 0.432
            Ответить
          • > ЧЯДНТ?
            не понимаешь ругань компилятора
            Ответить
            • коммент выше какбы демонстрирует несостоятельность инклюда, названного в этой ветке правильным
              Ответить
              • Коммент выше демонстрирует непонимание разницы плюсовых заголовков и заголовков, обеспечивающих обратную совместимость.
                #include <iostream>
                using namespace std;
                Ответить
        • Спасибо тебе, добрый человек!
          Ответить
      • > аутпут приложения удивляет: 3888 / 9000 = 0.432
        Что удивительного? Так и есть.

        И да, это не лаба по программированию. Это одна из задач лабы по тер. веру.
        Ответить
    • IsGood можно переписать как
      return ((d1 == d2) + (d1 == d3) + (d1== d4) + (d2 == d3) + (d2 == d4) +(d3 == d4)) == 1
      Ответить
      • Да, так логичнее и понятнее.
        Дословно "Количество совпадений == 1".
        Ответить
      • Гуд оптимизатор!
        Ответить
    • Ну вы тут ещё ключи компилятора для коммандной строки приведите все...
      Ответить

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