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

    +10

    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
    void MainWindow::mathFun()
    {
       if(stringBuffer->indexOf("pi") != -1)
        {
            int i = stringBuffer->indexOf("pi");
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+2, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number(stringArg2->toDouble() * 3.1415926));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("log") != -1)
        {
            int i = stringBuffer->indexOf("log");
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number(qLn(stringArg2->toDouble())));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("sqr") != -1)
        {
            int i = stringBuffer->indexOf("sqr");
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number(qSqrt(stringArg2->toDouble())));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("fac") != -1)
        {
            int i = stringBuffer->indexOf("fac");
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            long long j = 1;
            for(int k = 1; k <= stringArg2->toInt(); ++k)
            {
                if(stringArg2->toInt() == 0)
                {
                    ui->lineEdit->insert(QString::number(0));
                    return;
                }
                j *= 1 * k;
            }
            stringSum->append(QString::number(j));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("pow") != -1)
        {
            int i = stringBuffer->indexOf("pow");
            stringArg1->clear();
            stringArg1->append( stringBuffer->mid(0, i));
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number( pow(stringArg1->toDouble(), stringArg2->toDouble())));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("exp") != -1)
        {
            int i = stringBuffer->indexOf("exp");
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number(exp(stringArg2->toDouble())));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        if(stringBuffer->indexOf("mod") != -1)
        {
            int i = stringBuffer->indexOf("mod");
            stringArg1->clear();
            stringArg1->append( stringBuffer->mid(0, i));
            stringArg2->clear();
            stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
            stringSum->clear();
            stringSum->append(QString::number(fmod(stringArg1->toDouble(), stringArg2->toDouble())));
            ui->lineEdit->clear();
            ui->lineEdit->insert(*stringSum);
            qDebug() <<" i=" << i << " size=" << stringBuffer->size();
        }
        stringSum->clear();
        stringBuffer->clear();
    }

    Калькулятор на C++/Qt

    Запостил: ConstantineVL, 24 Июня 2014

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

    • > mathFun()
      Математические забавы?
      Ответить
      • От главной оконной компании
        Ответить
      • мафин же
        Ответить
      • То есть когда я у пхпшника вижу файл "myfun.php" то там порнуха внутри, а не все написанные за всю жизнь им функции?
        Ответить
    • мой первый калькулятор с разбором выражений был большим говном
      например, он искал операцию с высшим приоритетом и вхерачивал в строку скобки
      Ответить
      • >например, он искал операцию с высшим приоритетом и вхерачивал в строку скобки
        о, а я искал операцию с высшим приоритетом и заменял ее на результат. Но уже на следующем курсе переписал по человечески.
        Ответить
        • ну у меня там ещё и иксы были в строке, чтоб график рисовать, то есть уже тогда я строку преобразовывал в дерево

          по-человечески - это строить дерево на ходу, принимая токен за токеном, не возвращаясь назад и не убегая вперёд, такую технику я освоил только после универа
          Ответить
          • ну так классические лексический, синтаксический и семантический анализ на промежуточном представлении.
            Ответить
            • у меня это делает как бы по ходу прямо по мере чтения строки, можно строку хоть прямо из порта читать
              Ответить
              • Ну да, мне инж.калькулятор эту идею подсказал (там ведь тоже последовательно вводим и он и скобки и приоритеты обрабатывает).
                Ответить
          • Ты давно универ окончил?
            Ответить
      • > мой первый калькулятор... был большим говном

        А второй?
        Ответить
    • https://ideone.com/fAtnNa

      Вот мой первый калькулятор. Смеемся, бросаем какахи)
      Ответить
      • Первый калькулятор на F# после нескольких лет изучения программирования? Наркоман штоле?
        Я ожидал порцию какого-нибудь бейсикового ностальгического кода.
        Ответить
        • О, так оно ещё автором обновляется. Прямая трансляция на ideone, главное - чаще жать F5.
          Ответить
          • да я решил поправить что то) Больше не буду.

            Я впервые написал свой калькулятор когда начал функциональщину изучать. Так то
            Ответить
        • с бейсиком у меня связано одно воспамянание - я вместо английской с написал русскую с и дооолго не мог понять какого хуя.

          по факту я сначала написал интерпретатор, потом транслятор в C# а уже потом калькулятор
          Ответить
    • system("expr " + stringBuffer);
      Ответить
      • system("calc.exe");
        Ответить
        • MessageBox("Считай сам, сука!");
          system("calc.exe");

          Юзер-френдли вариант.
          Ответить
          • > Считай сам, сука!
            > calc.exe
            Нестыковочка, говнокод, сбивающий с толку интерфейс.

            MessageBox("Считай сам, сука!");
            exit(0);
            Ответить
            • MessageBox("Живи как знаешь. сука!");
              sudo rm -rf /
              Ответить
              • > sudo rm -rf /
                > /

                Какой анскилл )))
                Ответить
                • Да, нужно искать старую версию rm.

                  В новых нужно --no-preserve-root или проще: /* вместо просто слеша.
                  Ответить
                  • Но тогда корневая директория не удалится?
                    Ответить
                    • Проверь.
                      Ответить
                      • Проверил. Вроде ничего не удаля
                        Ответить
                        • 'sudo' is not recognized as an internal or external command,
                          operable program or batch file.


                          ахахаха, винда поимела ваш вирус, или что вы там распостраняете.
                          А на линуксе все файлы удалились

                          А еще говорят, что виндуос не безопасный! всё наоборот! это линукс не безопаснычй!
                          Ответить
                          • Попробуй wsl sudo.
                            Ответить
                            • Wsl это какой-то линукс в виндуосе?

                              ну да, через него удалились важные файлы!!

                              Линукс это ДЫРА В windows!!! пока его не было у меня ничего не удалялось!!
                              Ответить
                              • У меня в контроллерах нет ни виндовса, ни линукса. Переходи на контроллеры!
                                Ответить
                                • Пардон. Прочел, словно ты агитируешь за линуксы.
                                  Ответить
                            • Попробовал тебя меж сисек, не понравилось. Силикон жесткий.
                              Ответить
                            • Борманд, ты же силен в керберосе поди.
                              Знаешь, что такое SPN?

                              Если я хочу чтобы пользщователи могли прозрачно аунтентифицуроаваться в моем сервисе, то у меня есть две опции

                              * войти в домен, и зарегать SPN
                              * принть от них NTLM hash

                              Верно ли я понимаю, что второй способ гомосячий, а перый требует работать от имени доменного юзера?

                              иными словами, работать от локального пользователя мне нельзя.

                              Что думаешь про https://winitpro.ru/index.php/2014/03/28/group-managed-service-accounts-v-windows-server-2012/ ?
                              Кажется, от нее надо работать
                              Ответить
                              • Ну тут джва стула... Или ты доменный юзер или пароль везде передаёшь.
                                Ответить
                                • Пароль я не могу, потому что админ в домене запретил NTLM нахуй.
                                  Ответить
      • system("logoff")
        Ответить
    • показать все, что скрытоVanished
      Ответить

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