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

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
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
#include <iostream>
#include <cmath>
#include "govno.h"
using namespace std;
class SqrtQual {
    const string not_kor = "Нет корней!\n";
    struct ABC {
        long double kA;
        long double kB;
        long double kC;
    } gABC;
    long double diskrim(long double a, long double b, long double c);
    void diskrim_zero(long double a, long double b);
    void diskrim_bolshe(long double a, long double b, long double d);
    void vspomog();
    void konez();
    void m_bx_plus_c();
    public:
    void hello();
} obj;
int main() {
    obj.hello();
}
void SqrtQual::hello() { 
    cout << "\nПрограмма вычисления корней квадратного уравнения по формуле: ";
    cout << "aX^2 + bX + c = 0\n";
    Govnokod obj;
    gABC.kA = obj.opros('a');
    gABC.kB = obj.opros('b'); 
    gABC.kC = obj.opros('c');                              
    cout << endl;
    konez(); 
}
long double SqrtQual::diskrim(long double a, long double b, long double c) {   
    long double ac4 = 4*a*c;
    long double bkv = pow(b, 2);
    long double d = bkv - ac4;
    cout << "Дискриминант = " << d << endl;
    return d; 
}
void SqrtQual::diskrim_zero(long double a, long double b) {
    if (a == 0)
        cout << not_kor;  
    else {
        long double x = -b/(2*a);
        cout << "X = " << x; 
    }
}
void SqrtQual::diskrim_bolshe(long double a, long double b, long double d) {
    if (a == 0)
        cout << not_kor;    
    else {
        long double dsqrt = sqrt(d);
        long double a2 = a * 2;
        long double x1 = (-b + dsqrt) / a2;
        long double x2 = (-b - dsqrt) / a2;
        cout << "X1 = " << x1 << endl;
        cout << "X2 = " << x2 << endl; 
        }
}
void SqrtQual::m_bx_plus_c() {
    long double x = -gABC.kC/gABC.kB;
    cout << "X = " << x << endl;
}
void SqrtQual::vspomog() {
    long double D = diskrim(gABC.kA, gABC.kB, gABC.kC);
    if (D < 0)
        cout << not_kor;
    else if (D == 0)
        diskrim_zero(gABC.kA, gABC.kB);
    else
        diskrim_bolshe(gABC.kA, gABC.kB, D);
}
void SqrtQual::konez() {
    bool any_digit = ((gABC.kA == 0) and 
    (gABC.kB == 0) and 
    (gABC.kC == 0));
    bool not_equal_zero = ((gABC.kA == 0) and 
    (gABC.kB == 0) and 
    (gABC.kC != 0));
    bool equal_zero_v1 = ((gABC.kA == 0) and 
    (gABC.kB != 0) and 
    (gABC.kC == 0));
    bool equal_zero_v2 = ((gABC.kA != 0) and 
    (gABC.kB == 0) and 
    (gABC.kC == 0));
    bool equal_zero = equal_zero_v1 or equal_zero_v2;
    bool bx_plus_c = ((gABC.kA == 0) and (gABC.kB != 0));
    if (any_digit) 
        cout << "X -- любое число."; 
    else if (not_equal_zero) {
        cout << gABC.kC << " -- Не равно нулю!";
        cout << not_kor; }
    else if (equal_zero) 
        cout << "X = 0";
    else if (bx_plus_c) 
        m_bx_plus_c();
    else vspomog(); 
}

Вот для этой проги я писал предыдущие говнокоды. Тут нет решений для множества комплексных чисел пока что.

Запостил: Westnik_Govnokoda Westnik_Govnokoda, (Updated )

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

  • трудно выбрать самое плохое место в этой программе
    Ответить
    • Можно выбрать самое хорошее. Голосую за тридцать третью строку.
      Ответить
      • Мне 33 года — возраст Иисуса Христа, а что я сделал? Учения не создал, учеников разбазарил, бедного Паниковского не воскресил!
        Ответить
            • Хех, ни одной цитаты оттуда не помню, надо перечитать 🙁
              Ответить
              • Перечитай
                Заодно обдумай мысль "Парралели между дилогией про Остапа Бендера и Священным Писанием"
                Ответить
  • Ну... при a == 0 не то чтобы у уравнения не было корней... оно просто нихуя не квадратное. Можно сразу об этом и сказать, не начиная вычислений.
    Ответить
    • На практике полезно. Уравнение принимает a,b,c из R и выдаёт ответ. Область определение функции - декартово произведение областей определения аргументов*, нет выколотых точек и подмножеств, о которых не говорится в сигнатуре. Ну и программисту полезно понимать, как работает программа/формула во всех случаях, а не только для каких-то отдельных хороших вроде a,b,c=2,4,2.

      ________
      * если позабыть про переполнения и прочую питушню
      Ответить
  • - Сидим, пьём, а Артур Атарбекович в Лондоне важные переговоры ведёт. Если у него всё получиться, то для нас будет очень хорошо.
    Ответить

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

Где здесь C++, guest?!

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


    8