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

    +1

    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
    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, 25 Декабря 2020

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

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

        ________
        * если позабыть про переполнения и прочую питушню
        Ответить
      • Или можно всё-таки решить частный случай: bX + c = 0.
        Ответить

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