Летопись МИФИ

Диагноз: МИФИст


ЕГЭ-2024
Тесты ЕГЭ Онлайн
Задачи ЕГЭ по математике
Решения ЕГЭ по математике

Вступительные экзамены и специальности
Фишки для Корума:
Рейтинг пользователей Корума
Настроение • Модераторы
Темы • Картина дня • Realtime
Прочие фишки:
Нецензурная брань
Народная орфография
Морзянка онлайн • Калькулятор
Анаграммы • Игра в города

Загрузка календаря

Новые записи

20.05Задача про фермера и его кредит
26.01Актуализация сервисов ЕГЭ по математике 2014 года
05.11Поломалось
28.08Смена парадигмы
18.07Как вести себя в приличном обществе, предварительно обмочив штаны
оглавление »

Лучшие записи

1.Математическое порно1563
2.Ответы ко всем задачам ЕГЭ по математике 2010 года793
3.Тесты ЕГЭ Онлайн515
4.Результаты ЕГЭ по математике368
5.Результаты ЕГЭ по русскому языку268

О чем тут?

NX VBAB Webometrics igjhs А1-08 Абитуриенты Бачинский ВКонтакте Ващенифтему Волга Диплом Дрессировка преподов Дума ЕГЭ Жизнь Забабахал Инновации История Кафедра 26 Кларк Корум Лженаука МИФИ МИФИсты Морзянка НИЯУ Нанотехнологии Наука Образование Омоймоск ПЦ Поздравляю Поиск Президент Преподы Приколы Программное обеспечение Рейтинги Русский язык Сессия Смерть Статистика Стихи Сувениринг Тест Учеба Учебные материалы ФЯУ Физтех Фотки Ядерщики матанализ

Комментарии

День памяти
  20 мая 2023 (мифи умер)

Задача про фермера и его кредит
  20 мая 2023 (Алекс)

Математическое порно
  22 марта 2023 (Angleton)

Российский Союз ректоров
  19 февраля 2023 (Hellen Paul )

В помощь юному радисту: Морзянка 1.0
  13 ноября 2022 (Сергей)

Знахари и шаманы в МГТУ имени Баумана
  5 ноября 2021 (монах из кельи)

Зачет по инженерной графике
  24 августа 2020 (Инженерная графика)

Пасынки Вселенной
  18 февраля 2020 (Max Brown)

Финансовая пирамида за 10 рублей
  7 февраля 2020 (Флора Миллс)

База решений задач ЕГЭ по математике
  26 декабря 2019 (Мария)

$kib@t®onЪ
Сейчас на скибатроне
Шедевры
Я ищу слово,  «» 

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
a b c d e f g h i j k l m n o p q r s t u v w x y z

Слово «maxlength»
впервые сказано пользователем jiffy 14.10.2011 в 19:10,
и с тех пор употреблялось 18 раз.
СообщенияПользователиПользователи (top10)

Сообщения со словом
«maxlength»

Запрос выполнился за 0.0058 сек.
  1. 14.10.2011, 19:43. jiffy в теме
    «The C Programming Language.»
    ... in a word define out 0 state not in a word define maxlength 40 maximal length of a word longer words are ignored это как вы наверное уже знаете так называемые макроопределения в общем случае программа состоит из нескольких файлов с расширением с исходные коды и файлов с расширением h заголовочных файлов в упрощенном виде преобразование этого набора файлов в исполняемую программу проходит следующие этапы http en wikipedia org wiki translation unit programming 1 препроцессирование preprocessing на выходе так называемые translation unit 2 компиляция compilation компиляция translation units на выходе оbject files 3 связывание linking на выходе исполняемая программа executable program нас интересует первый этап препроцессирование препроцессированием занимается препроцессор препроцессор языка с и объекты называемые макросами штука до того не любимая отцом-основателем с б страуструпом что он не раз признавался на страницах своих книг что он всеми силами хотел и наверное до сих пор хочет застать то время когда препроцессор с с его макросами канет в лету для подобного отношения существуют очень веские основания однако избавиться от препроцессора окончательно не удалось ни в с ни в с и не получится потому что препроцессор и макроподстановки описаны и закреплены стандартом макросы провоцируют ошибки их тяжело писать крайне сложно и неприятно отлаживать тем не менее это исключительно мощное и как мне кажетс изящное средство если коротко это не совсем верно но пока на данном этапе достаточно макроподстановка заключается в следующем препроцессор берет макрос и делает контекстную замену в с -шной программе к чему это все а вот к чему у нас есть вот такое определение и чуть ниже такой цикл код define maxlength 40 maximal length of a word longer words are ignored int lengths maxlength for i 0 i maxlength i lengths i 0 еще до компиляции на этапе...
  2. 14.10.2011, 19:10. jiffy в теме
    «The C Programming Language.»
    ... in a word define out 0 state not in a word define maxlength 40 maximal length of a word longer words are ignored prints a vertical histogram of the lengths of words in the input int main void int i j c state wl int nmax int lengths maxlength state out wl 0 nmax 0 for i 0 i maxlength i lengths i 0 while c getchar eof if c c t c n if state in state out if wl maxlength lengths wl else printf nwarning word longer than d symbols n maxlength wl 0 else if state out state in wl for i 1 i maxlength i if lengths i nmax nmax lengths i printf n for i nmax i 0 --i printf for j 1 j maxlength j if lengths j i printf else printf printf n printf for i 1 i maxlength i printf 2d i return 0 ну скомпилировал я ее повводил слова пора думаю что-нибудь нарисовать и поскольку запустил ее в linux нажал на ctrl d чтобы ввести eof ничего не произошло до чего дошел прогресс думаю уже терминалы в x-windows стали настраивать так что они базовые управляющие символы не понимают вбил тестовую прогу состоящую из getchar ан нет все в порядке с терминалами и спустя некоторое время нашел в чем дело обратите внимание на следующие объявления в программе код int i j c state wl int nmax int lengths maxlength и на этот цикл код for i 0 i maxlength i lengths i 0 maxlength определено как 40 не совсем здорово кстати определено но мы к этому позже вернемся вопрос какие индексы являются допустимыми при обращении к элементам массива lengths ответ все целые числа от 0 до 39 включительно в диапазоне от 0 до 39 содержится ровно сорок 40 целых чисел ровно столько сколько мы определили в maxlength поэтому цикл код for i 0 i maxlength i lengths i 0 ошибочен ошибка в том что перебираются все целые числа от 0 до 40 включительно и таким образом мы обнуляем в цикле число типа int следующее сразу за последним элементом массива length а последний элемент массива это length 39 теперь почему же в моем случае я не попадал в цикл while где вызывается getchar и в связи с этим я не мог ввести eof а вот почему это ей-богу весьма примечательное и весьма поучительное обстоятельство смотрите попав в цикл код for i 0 i maxlength i lengths i 0 переменная i изменялась от 0 до 40 включительно и на последнем шаге цикла мы присваивали length 40 значение 0 shit happens именно в этой ячейке памяти лежала локальная переменная i счетчик цикла определенная в начале функции main то есть выполняя length 40 0 мы обнуляли переменную i дале выполнялось пост-условие цикла for а именно i переменная i становилась равной 1 мы переходили к проверке условия цикла и оно сюрприз выполнялось 1 40 соответственно мы попадали в бесконечный цикл и до while c getchar я просто не доходил вот эта ошибка адресация к неверному участку памяти одна из самых часто встречающихся и одна же из самых опасных чаще ее делают правда работая напрямую с указателями как эту проблему решить можно ее решать несколькими способами например можно считать что по индексу 0 лежат слова длины 1 по индексу 1 лежат слова длины 2 и т д однако это не очень здорово потому что неестественно гораздо проще объявить массив так код int lengths maxlength 1 в этом случае в ячейку lengths 0 ничего...

← раньше

позже →


Рейтинг блогов



 

откуда • куда • где • eureka!
Бездарно потраченное время:
105820 дней