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

    +147

    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
    case 5:
    	   { 
    	    char podr[20];
                int r=1;
    	    puts("Vvedite nazvanie podrazdelenia");
    	    scanf("%s",podr);
    	    for(i=0;i<n;i++)
    			if(!strcmp(podr,s[i].podr))
    			{ r=0;
    			  for(int j=i;j<n;j++) s[j]=s[j+1];
    			  n--; 
                              i--; // костыль
    		    }
    	    if(r) puts("ERROR");
    	    getch();
    	    } break;

    Опять костыль для лабы друга.

    Запостил: dark-al, 17 Мая 2011

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

    • И в чем заключается костыль? Или автор только что с паскаля "слез"?
      Ответить
      • На паскале только в школе писал. В данном случае я назвал костылем, то что добавил в код (чтобы он естественно работал). Университетские лабы ничто иное как говнокод.
        Ответить
        • Университетские лабы ничто иное как унылое говно
          Ответить
        • а вот если по массиву бежать с другой стороны, то "костыль" бы не понадобился. так что проблема не только в университетских лабах....
          Ответить
          • Мне дали лабу, сказали сделай чтобы работало. Да, костыль можно убрать, но это займет время. А оно мне надо? :)
            Ответить
    • за хуёвое форматирование кода надо расстреливать...
      Ответить
    • > scanf("%s",podr);

      Кстати, эта процедура проверяет буфер на переполнение?
      Ответить
      • Нет конечно. Переполнение буфера здесь обеспечено ;)
        Ответить
        • А зачем тогда вообще нужна эта процедура?
          Ответить
          • Для переполнения буфера, очевидно.
            Ответить
          • Какая "процедура"? 'scanf'? Классический 'scanf' предоставляет средства защиты от переполнения буфера, только надо не забывать ими пользоваться. В данном случае автор этого не сделал. Так что спрашивать надо зачем нужен этот автор, а не зачем нужна эта "процедура".
            Ответить
    • А, да, за такое удаление элемента из массива надо расстреливать.
      Ответить
      • За "за X надо расстреливать" надо расстреливать!


        Куда вы меня тащи~
        Ответить
        • Не, ну серьёзно, ну почему для удаления элементов из массива берут такой тупорылый алгоритм, который хуже пузырька? И даже то, что для этого говноалгоритма приходится на ходу менять счётчик и границы цикла, не смущает макак.
          Ответить
          • Я что-то не соображу, какая тут альтернатива. Отсортировать по признаку "содержит-не содержит", а потом обрезать конец?
            Ответить
            • > Я что-то не соображу
              Пипец, я для детей статью писал.
              http://forum.pascal.net.ru/index.php?showtopic=26642
              Вообще да, ты примерно прав.
              Ответить

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