1. Си / Говнокод #26317

    −3

    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
    void push_stack(node *topPTR, int value) {
    	node newPTR = malloc(sizeof(Stack));
    
    	if (newPTR != NULL) {
    
    		newPTR->alpha = value;
    		newPTR->nxtPTR = *topPTR;
    		*topPTR = newPTR;
    	}
    	else {
    
    		puts("error");
    	}
    }
    
    void push_stack_2(node_2 *topPTR_2,  double value) {
    
    	node_2 newPTR = malloc(sizeof(Stack_2));
    
    	if (newPTR != NULL) {
    
    		newPTR->alpha = value;
    		newPTR->nxtPTR_2 = (void *)  *topPTR_2;
    		*topPTR_2 = newPTR;
    
    	}
    	else {
    
    		puts("error");
    	}
    }
    
    int pop(node *fix) {
    	
    	int  value = 0;
    	node temp = *fix;
    	value = (*fix)->alpha;
    	*fix = (*fix)->nxtPTR;
    	free(temp);
    return value;
    }
    
    double pop_2(node_2 *fix) {
    	double  value = 0;
    	node_2 temp = *fix;
    	value = (*fix)->alpha;
    	*fix = (void *)   (*fix)->nxtPTR_2;
    	free(temp);
    return value;
    }
    
    char check_stack(node data) {
    	return data->alpha   ==  0  ;
    }
    
    int isOperator(char c) {
    	return c == '/' || c == '*' || c == '-' || c == '+' || c == '^' ;
    }
    
    int precedence(char data_1, char  data_2) {
    		
    		switch(data_1){
    		case '(':	
    		return -1;
    		case '^':
    	
    			if(data_2 == '^' ){
    					return    0;
    			} 
    			 else if (data_2 == '*' || data_2 == '/' || data_2 == '+' || data_2 == '-'   ){
    			 	
    			 }
    	 		
    	 	case 	'/' : 
            case 	'*':        
    			
    			if(data_2 == '^' ){
    					return    -1;
    				} 
    					else if( data_2 == '/' || data_2 == '*'     ){
    						return    0;
    					}	
    				
    			else if( data_2 == '+' || data_2 == '-'     ){
    						return     1;
    		
    		}
    		
    		case  '+':
    		case  '-':		
    		
    		if(data_2 == '^'  || data_2 == '/' || data_2 == '*'        ){
    			return    -1;
    				} 
    		else{
    			return     0;
    			 }
    		}
    }

    calc 3

    Запостил: tyrin, 05 Января 2020

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

    • А зачем делать стек из связного списка?
      Ответить
      • Не могу знать, задача из Дейтелов, из чего был пример из того и липил ))))
        Ответить
      • Чтобы жрать больше памяти.
        Ответить
    • Никогда не понимал, как можно так распидорасить форматирование. Эпилептический припадок у автора чтоли случился?
      Ответить
      • Причём в начале всё более-менее прилично: отбивка табами, в начале блока одна пустая строка, return, выровненный по объявлению функции (выглядит весьма неплохо, кстати)… А потом реально пошёл пиздец.
        Ответить
        • Как у Владимира Сорокина, в начале каждого рассказа всё более-менее прилично: соблюдается грамматика, даже есть смысл (выглядит весьма неплохо, кстати)... А потом (примерно с середины рассказа) идёт пиздец.
          Ответить
          • дорогой мартИн Алексеевич!
            Ответить
          • Особенно доставил рассказ "Дорожное происшествие"...
            Интересно, дочкам он читает свои рассказы?
            Ответить
      • Такое встречается на ранних этапах программирования. Нажимать кнопку "скопмилировать" человек уже научился, а форматировать код - ещё нет. Ещё и табы с пробелами мешает там, где их нельзя мешать. Где-то пытается форматировать код, где-то плюёт на это, где-то вставляет куски кода из интернетов, где-то случайно нажимает на пробел, но не удаляет, т.к. всё равно компилируется.
        Ответить
        • Вообще похоже на смесь табов с пробелами. Это часто приводит к порче форматирования, ибо в разных редакторах (даже в экземплярах одного редактора, но с разными настройками) таб может соответствовать разному количеству пробелов. А есть слишком «интеллектуальные» редакторы, которые на своё усмотрение могут табы заменять пробелами или пробелы заменять табами, поэтому восстановить оригинал невозможно.
          Ответить
          • ГК не ест табы и пробелы, если это не начало и конец поста. Так что видно, что смесь есть наверно только в одном случае (строка 75), в остальных случаях автор просто не совладал с отступами. Может быть, ему сказали их пофиксить, но до конца занятия осталось слишком мало времени (об этом говорят пробелы перед закрывающейся скобкой), и теперь его отправили на пересдачу.
            Ответить
            • Кстати, строка 75 довольно интересна: в ней ровно восемь пробелов, что соответствует двум «общепринятым» табам (остальные кейсы выровнены именно так). Очень похоже на кривую работу редактора. А ещё в строках 74 и 75 после «case» идёт один пробел и один таб. Интересно, что это такое…
              Ответить
    • > puts("error");

      Заебись обработка ошибок. Вывели ошибку и ебашим дальше.
      Ответить
      • Именно поэтому я за "PHP".
        Ответить
      • Чёрт, не заметил эту питушню. Эталонная лаба.
        Ответить
      • А вдруг puts не из стандартной библиотеки, а собственная функция, которая прерывает программу?
        Ответить
        • Верно подмечено. Может даже макрос
          #define puts(s) do { puts(s); exit(1); } while (0)
          Ответить
          • Это неправильно, дело в том что puts не
            void puts(char *s);
            а
            char *puts(char *s);
            Ответить
            • Но в рассматриваемом коде не используется результат puts. А значит никто не заметит разницы.
              Ответить
            • Приведи реальный пример использования.
              Ответить
            • int puts( const char *str );


              https://en.cppreference.com/w/c/io/puts

              Return value

              On success, returns a non-negative value

              On failure, returns EOF and sets the error indicator (see ferror()) on stream.
              Ответить
              • Точно, я с чем-то перепутал, наверное с gets.
                Ответить
                • В «PHP» всё консистентно. В случае неудачи возвращается «FALSE».
                  Ответить
      • On Error Resume Next
        Ответить
      • Вот вы не поверите, второй год ищу Сикорда, пока что все крутят пальцем у виска ))))
        Ответить
        • С Хавербеке таких проблем нет. Именно поэтому я за Хавербеке.
          Ответить
          • > сикорд
            > хавербеке
            Кто все эти люди?
            Ответить
            • Авторы книг «Анскильное программирование».
              Ответить
              • А давайте организуем школу анскилла. Для начала попробуем составить учебную программу.
                Ответить
                • Чему будет учить эта школа?
                  Ответить
                  • Искусство анскилирования.

                    * 10 алгоритмов O(n!), которые вам следует знать
                    * Делаем N+1 запросы с любым ORMом легко и просто
                    * Как спрятать ошибку
                    * malloc(1), или как не использовать стек без необходимости
                    * Висячий указатель и двойное освобождение в одной функции!
                    * Дабл эскейп и XSS на одной странице
                    * Тотал Коммандер и деплоймент приложений
                    * \"SQL инъекции\" -- это просто
                    * Искусство UB: пишем код, который почти всегда работает
                    * "своими словами": как написать одно и тоже бизнес знание семь раз в разных местах системы по разному
                    * почтовая рассылка из UI треда
                    Ответить
                    • * чистка GET и POST для защиты от XSS и SQL inj
                      Ответить
                      • состоит из двух уроков: удаляем кавычку и удаляем слово DELETE.

                        Bonus:
                        * регулярные выражения: универсальный инструмент для парсинга HTML
                        Ответить
                        • * составляем regexp для проверки валидности email
                          Ответить
                          • 10 имен верхего уровня, которые могут быть в емейл
                            Ответить
                    • А курс кобенаторики и теории вореантности будет вести мастер дзенский питушенский!
                      Ответить
                    • И, конечно же, ANSCIl символы
                      Ответить
                    • printf() как инструмент отладки.
                      Ответить
                      • Вывод ошибок в браузер как инструмент отладки.
                        Ответить
                      • Этого не должно быть в школе анскилла.
                        Ответить
                        • Должно, должно. Оно же прямо в stdout срёт без фильтрации по уровням и т.п.
                          Ответить
                          • Сразу видно, что ты скилловой, и не можешь вести курсы.
                            Ответить
                          • Это же отладка, а не запись в лог. И не тесты.
                            Нашёл баг - закомментировал/удалил эту питушню.
                            Ответить
                        • а как еще можно анскильно отлаживать?
                          Ответить
                          • Это действитель анскильно. Правильно "var_dump" + "xdebug".
                            Ответить
                            • >var_dump"
                              чем это лучше printf?

                              >xdebug
                              за упоминание дебага можно вылетить из анскильной школы, ты бы еще профилировщик упомянул)
                              Ответить
                          • * рандомизированный метод внесения правок до достижения работоспособности
                            Ответить
                            • Сразу видно, что ты анскильный.
                              ± 1 driven development
                              Ответить
                            • "чото без этого глючит": учимся объяснять коллегам, зачем мы прибавили четыре к этой переменной
                              Ответить
                              • Можно не объяснять, а просто оставить комментарий:
                                // Вася, не трогай это выражение.
                                // Я пробовал изменять последнее слагаемое.
                                // С другими значениями глючит.
                                Ответить
                            • Волшебно. Ещё добавить "нажатие кнопки компиляции, пока не заработает".
                              Ответить
                              • Смех смехом, а при синтезе прошивки для FPGA так иногда делают, если совсем чуть-чуть не удаётся влезть в тайминги.

                                Причём сейчас там есть параметр с seed'ом, а раньше тупо переменные переставляли местами пока псевдорандом не ляжет как надо...
                                Ответить
                          • Похоже, лучше ответа веб-макаки ничего не придумаешь.

                            Поиск на стековерфлоу и форумах кусков кода и вставка их в случайные места параллельно с удалением кода из случайного места. И обязательно - удалить и добавить сразу несколько строчек между двумя конпеляциями-запусками, чтобы не было понятно, что именно заставило код заработать/сломаться.
                            Ответить
                            • Я ненавижу тебя за то, что ты не оправдал надежд моих, оказавшись коллаборантом. Презренное существо.
                              Ответить
                            • и сразу закоммитить с комментарием "fix"
                              Ответить
                              • Какой коммит )))

                                На самом деле, изменить название папки на moj-proekt-final.
                                Ответить
                    • * оптимизация кода: заменяем " на '
                      Ответить
                    • "прокликай там основные кейсы": проверяем приложение без юнит-тестирования
                      Ответить
                      • Гость 8, не возникает ли у тебя мысли о том, что ты - нахуй не нужное существо? Слейся, не подымай людям нервы.
                        Ответить
                    • * экспресс-курсы интеграции копипасты с SO в свой код
                      Ответить
                      • Экспресс способ отладки приложений посредством выкатывания тысячи строк кода на форум с комментрием "чото не работает, не скажете в чем дело?"
                        Ответить
                    • "чото тупило вчера, покрути там настройки": учимся формулировать задачи для айти отдела
                      Ответить
                      • "if user.town == 'Niznevartovsk and price == 94": управление сложной бизнес-логикой в коде
                        Ответить
                        • LEFT JOIN tovar on kod like %lozhki;22%;
                          SET NAME="<B><a href="shurup.php?q=42">шуруповёрт</a></B>"


                          курс архитектуры баз данных
                          Ответить
                    • * Стабилизируем асинхронные приложения при помощи sleep / timeout.
                      Ответить
                • Давайте запилим школу ональной любви.
                  Ответить
                • >рандомизированный метод внесения правок до достижения работоспособности

                  Это называется "генетические алгоритмы"
                  Ответить
          • ух ты
            серьезная книга

            https://img.labirint.ru/rcimg/70b78df059137bd9a2453b8545e42c0f/1920x1080/comments_pic/1942/origin_1_154458600df2039311957172101f3c0 3.jpg?1571183491
            Ответить

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