1. Pascal / Говнокод #6505

    +116

    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
    var
        s1:string;
        i:integer;
    const
        m=50;
    begin
        write ('Введите строку: ');
        for i:=1 to m do
            begin
                 write ('s1[',i,']');
                 readln (s1[i]);
            end;
        writeln ('Длина строки: ', length(s1));
    end.

    Это Pascal. Вот так студенты физмата вводят строку, а потом считают ее длину.

    Запостил: nanovsky, 28 Апреля 2011

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

    • Ну, вообще-то длина строки считается правильно, а вот на шаманстве с циклом я завис.
      Ответить
      • Длина строки считается правильно, но вас не смущает что она всегда будет одинаковой?
        Ответить
        • Ну да, им придется вводить всегда ровно 50 символов.
          Паскаль, ведь, насколько помню, всегда ждет символ при read и просто при нажатии Enter ничего не будет.
          Ответить
          • Да всегда ждет символ
            Ответить
          • Readln же
            какой паскаль, кстати? у борланда например строка как была так и останется нулевой длины
            Ответить
            • Turbo Pascal 7
              Ответить
              • я стандарт так и не удосужился прочесть, чисто теоретически какая-либо реализация может изменять счетчик значащих символов при записи
                Ответить
        • Программа прямо изматывает пользователя :D
          Ответить
          • На самом деле этот студент был прислан из будущего для уничтожения преподавателя.
            Ответить
        • Это чтобы всякие кулхацкеры не эксплоитировали на проге со StackOverflow.
          Ответить
        • Выяснилось, что программа всегда будет возвращать 0, т.к. счетчик символов хранится в s1[0] и во время работы программы не меняется.
          Ответить
    • индентация годная, одобряю
      Ответить
      • Чего не сделаешь ради настоящих гурманов
        Ответить
      • Ага, иф отдельно, бегин отдельно.
        Только надо было не по 4 символа тогда уж, а по 8.
        Ответить
    • В Дельфи это вылетит при Huge Strings, так как строке надо сначала выделить место.
      Ответить
      • ну так это же не делфи
        Ответить
      • какое оно ваше все такие говно )
        Ответить
      • >В Дельфи это вылетит
        этож всем известно и очевидно
        дельфи всегда вылетает
        Ответить
    • Зато какая читабельность!
      Ответить
    • Моя мысль такая - вернется ноль, т.к. счетчик хранится по String[0], а так как они его не изменяют и не присваивают строку s1:=s1+s1[i], то у них будет 0. Это-же азы. Какого хера?
      Ответить
      • Проверил. Вы абсолютно правы, всегда вернется 0. Спасибо за замечание.
        Ответить
    • var
      stroka:string;
      begin
      write('vvedite stroku: ');
      readln(stroka);
      writeln('dlina stroki=',length(stroka));
      readln;
      end.

      Так веть?))
      Ответить

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