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");

      Заебись обработка ошибок. Вывели ошибку и ебашим дальше.
      Ответить

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