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

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    ............................
    int mas1[5]={1,6,3,4,9};
    int mas2[5]={9,6,3,4,1};
    int mas3[5];
    mas mas3[1]=sqr (mas1[1]*mas2[1]);  
    mas mas3[2]=sqr (mas1[2]*mas2[2]);
    mas mas3[3]=sqr (mas1[3]*mas2[3]);
    mas mas3[4]=sqr (mas1[4]*mas2[4]);
    mas mas3[5]=sqr (mas1[5]*mas2[5]);
    ............................

    Данный пример народного творчества попался мне в работе одного стюдента ) синтаксис сохранен в оригинале там точно написано sqr :). А пример должен был вычислять среднегеометрическое и писать в третий массив.

    Запостил: USERNAME, 08 Декабря 2010

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

    • А как описан mas?
      Ответить
    • Студенту не хватило времени пройти "Соло на клавиатуре" и отыскать клавишу "t"?
      Ответить
      • А может это квадрат, а не корень. На манер Basic.
        Ответить
        • Я сам видел условие и листок-вкладку с "решением", все остальное выше по тексту наверное на другом листке было, его не видел. А дальше написан был какойто бред, по теории.
          Ответить
      • Он потом допишет!
        Место же оставлено…
        Ответить
    • Я тоже так сначала подумал, но среднее геометрическое есть квадратный корень из произведения данных чисел, но не квадрат чего-то там.
      А про sqr - я тоже так называю макрос в случае необходимости.
      Ответить
      • комментарий является ответом на комментарий absolut про квадрат, а не квадратный корень
        Ответить
    • В общем случае - корень N-степени.
      Ответить
      • комментарий является ответом на комментарий andremacareno про среднее геометрическое, а не квадрат чего-то там
        Ответить
        • прошу прощения, да
          в таком случае можно использовать pow(*тут произведение*, 1/n)
          раз я так фейланул со средним геометрическим, то пойду в школу схожу
          Ответить
    • Вот видите, а на Паскале так написать нельзя...
      Ответить
      • Да, на Паскале это выглядело бы куда логичнее:
        type mas=array[0..4]of integer;
        const
        mas1:mas=(1,6,3,4,9);
        mas2:mas=(9,6,3,4,1);
        var
        mas3:mas;
        begin
        mas3[1]:=sqr (mas1[1]*mas2[1]);  
        mas3[2]:=sqr (mas1[2]*mas2[2]);
        mas3[3]:=sqr (mas1[3]*mas2[3]);
        mas3[4]:=sqr (mas1[4]*mas2[4]);
        mas3[5]:=sqr (mas1[5]*mas2[5]);
        end.
        Сразу заметно, что индекс вышел за границу массива, не то что в Си, где можно затереть память.
        Ответить
      • и на джаве -- тоже)
        Ответить
        • Я же говорил - Си очень опасный язык!
          Ответить
      • Слава перлоукушенного покоя не даёт?
        Ответить
    • Компилятор это проглотил? Переменная объявляется несколько раз. Или это на бумажке сдавалось?

      int mas3[5];
      ...
      mas mas3[2]=sqr (mas1[2]*mas2[2]);
      Это создаётся массив из двух элементов типа mas? Этот студент перед всеми переменными ставит тип?
      Ответить
      • Объявленный массив (даже с дургим именем) нельзя так инициализировать ни в С, ни в С++. Поэтому никакой компилятор это проглотить не мог. Скорее всего автор поста просто запостил "по памяти" какую-то белиберду.
        Ответить
      • Работа сдавалась на бумажке есть, фото но ооочень плохого качества. А там походу какой-нибудь макрос а не тип все-таки.
        Ответить

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