Кресты / Говнокод #2899 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 elmigranto, (Updated )

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

  • Действительно говнокод:
    IsGood() должна быть const,
    d1, d2, d3, d4, IsGood() - private.
    И функцию печати тоже надо было засунуть в класс...
    Ответить
        • Ты где видел не говнокодящих школьников, умник?
          Может ты в школе неговнокодил?
          Ответить
            • Он в школе скорее всего даже мышку недержал... :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
    Ответить
  • Ну вы тут ещё ключи компилятора для коммандной строки приведите все...
    Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8