|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.11.2012, 12:38 | #31 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Спасибо вам, что подняли тему! Я уже забыл про неё. Пора бы разобрать все задачи до конца. Прошу всех активно выкладывать здесь свои решения. Мы их будем сравнивать друг с другом и с решениями из других источников, таких как:
http://clc-wiki.net/wiki/K%26R2_solutions http://programmersforum.ru/showthrea...480#post996480 Вот html-книга К&R на английском: http://programmersforum.ru/showpost....&postcount=144 tungsten, хорошие у вас вопросы. Я постараюсь до вечера предложить свой вариант решения. Давайте все упражнения книги подробно разбирать в этой теме! Не стойте на месте, решайте остальные и выкладывайте здесь. Чем больше вариантов решения и вопросов, тем лучше! |
06.11.2012, 21:18 | #32 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Задание 1.20
"Напишите программу detab, которая бы заменяла символы табуляции во входном потоке соответствующим количеством пробелов до следующей границы табуляции. Предположим, что табуляция имеет фиксированную ширину n столбцов. Следует ли сделать n переменной или символическим параметром? Мое решение не идеальное. Код:
Последний раз редактировалось tungsten; 06.11.2012 в 23:53. Причина: косяки копипаста из putty |
08.11.2012, 20:18 | #33 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Как говорится "утро вечера мудренее"
сегодня выдался вечерок и я снова заглянул свежим взглядом на свои труды, и обнаружил абсолютно глупую ошибку. В цикле Код:
Код:
|
09.11.2012, 01:16 | #34 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Упражнение 1.21
Упражнение 1.21
Напишите программу entab, которая бы заменяла пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций и дополнительных пробелов, - так, чтобы заполнять то же пространство. Используйте те же параметры табуляции, что и в программе detab. Если для заполнения места до следующей границы табуляции требуется один пробел или один символ табуляции, то что следует предпочесть? Лично я предпочел ставить табулятор в любом случае. Таким образом спустя два часа интенсивного мозгонапряжения родился следующий код в 53 строки. Код:
Последний раз редактировалось tungsten; 09.11.2012 в 01:24. |
09.11.2012, 20:11 | #35 | ||
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
tungsten, у меня теперь будет больше свободного времени. Можно будет сосредоточится на написании и разборе алгоритмов. Если честно, то с алгоритмами у меня не очень. Ну на то и задачи, чтобы учиться.
Мелкие недочёты. 1. В функции не хватает return. Вот какое предупреждение выдал Visual C++ 2010 Express Edition: Цитата:
Цитата:
Вместо: Код:
Код:
Вместо: Код:
Код:
Код:
Код:
Код:
Чтобы избежать той ошибки, которую вы сами описали в сообщении №33. 5. Не забывайте инициализировать переменные. В упражнении 1.20 вы забыли инициализировать переменную k. Если при запуске вести символ табуляции, то получим в VC++ 2010: 6. Функция spacediv() из упражнения 1.20 требует замены. В вашей функции разобраться не смог. Предлагаю свой вариант: Код:
P.S. Надо будет потом реализовывать версии упражнений с проверкой корректности введённых данных. Это позже. Пока будем алгоритмы оттачивать. P.S.S. Упражнение 1.21 ещё не смотрел. Решайте. Дальше будет интереснее. Я вас поддержу! Последний раз редактировалось 8Observer8; 09.11.2012 в 20:20. |
||
09.11.2012, 21:45 | #36 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Спасибо за разбор по косточкам. Занимаюсь я от случая к случаю, не всегда вспоминаю правила оформления. Без return фряха спокойно компилит командой 'cc', в Visual C++ наверняка более строгие правила, но все равно спасибо, попробую не забыть в будущем
С алгоритмами у меня неплохо в голове, а вот математику знаю на твердый НОЛЬ, поэтому остаток от деления выполнен через узкое место, тут я прошу прощения за свой индусский код Вот попробовал пояснить, думаю поймете. Код:
Оффтоп: модераторам и админам портала - хотелось бы спойлеров в сообщениях Последний раз редактировалось tungsten; 09.11.2012 в 22:01. |
17.11.2012, 03:41 | #37 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Упражнение 1.22
Напишите программу для сворачивания слишком длинных строк входного потока в две и более коротких строки после последнего непустого символа, встречающегося перед n-ым столбцом длинной строки. Постарайтесь, чтобы ваша программа обрабатывала очень длинные строки корректно, а также удаляла лишние пробелы и табуляции перед указанным столбцом. не совсем ясно что имелось ввиду под словами лишние пробелы и табуляции перед указанным столбцом, в общем я убрал все двоящиеся пробелы и табуляторы. В группе стоящих рядом пробелов и табуляторов, учитывается ширина первого символа этой группы. Листинг не поместился в этом сообщении, кидаю следом. |
17.11.2012, 03:43 | #38 |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
Упражнение 1.22
Код:
Последний раз редактировалось tungsten; 17.11.2012 в 03:52. |
17.11.2012, 03:45 | #39 | |
Пользователь
Регистрация: 05.11.2012
Сообщений: 16
|
return'ы ставить не стал, раздражает
Цитата:
|
|
17.11.2012, 12:29 | #40 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Я так понимаю, что вы разрабатываете программы в среде FreeBSD из командной строки. Вы пользуетесь консольным отладчиком? То есть, вы умеете выполнять программы пошагам в косольном отладчике? Если да, то какой отладчик вы используете? Я никогда не пробовал работать с консольным отладчиком. Сейчас посмотрел в гугле нашёл такой http://www.opennet.ru/docs/RUS/gdb/gdb-prog.html.gz
Если будите разрабатывать в Linux, Mac Os или Windows, то рекомендую поставить среду Eclipse. Вот сайт: http://www.eclipse.org. Скачать отсюда: http://www.eclipse.org/downloads/?osType=win32 Выбираем среду: Инструкция установки: - установка не требуется. Нужно распаковать скаченный архив Eclipse расширяется расчёт плагинов. Важные приимущества даже для начинающего разработчика: - Встроенные системы управления версиями (EGit, CVS). Так же можно поставить SVN. Я выбрал EGit. По следующей ссылке инструкция, как начать использовать EGit c нуля: http://www.vogella.com/articles/EGit/article.html (если большие пробемы с английским - пользуйтесь Google переводчиком) С помощью EGit можно сохранять версии разрабатываемой программы. EGit сохраняет изменения в очень экономичном виде, в так называемом, хранилище (repository). Все изменения нужно комментировать. Изменения можно увидеть сравнив версии с помощью инструментов EGit. Всегда можно вернуться к старой версии и, к примеру, развить разработку этой программы по новой ветке. Можно создать много веток и переключаться между ними, развивая каждую. Можно разместить хранилище EGit на хостинге в интернете и разрабатывать ПО в команде. Например, вы загружаете (делаете import) на свой компьютер последнюю версию разрабатываемой программы (или не последнюю). Делаете в ней изменения. Комментируете их. И отгружаете (делаете export) исправленную версию обратно на хостинг. Причём все версии программы всегда доступны. - Возможность поставить плагины для модульного тестирования (xUnit) по методологии экстремального программирования (TDD). Плагин для Java программ JUnit поставляется вместе с Eclipse. Для С программ - CUnit, для С++ программ - CppUnit и т.д. Вот список: http://c2.com/cgi/wiki?TestingFramework Я для С программ использую CuTest. Это framework для модульного тестирования программ на С. Он не является плагином для Eclipse. Чтобы использовать этот framework нужно подключить к своему проекту два файла: CuTest.h и CuTest.c (скачать с этого сайта: http://cutest.sourceforge.net/) P.S. Продолжайте решать задачки. Я начну разбирать ваши решения, как только будет появляться время. Впереди ещё много интересных задач, продолжайте в том же духе! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Упражнения c# | veter48 | Помощь студентам | 0 | 12.07.2011 18:53 |
[Си] Упражнения | Fobo5 | Помощь студентам | 1 | 02.02.2011 21:22 |
(С) Простое упражнение из Кернигана, Ричи. Пробелы | Матвейка | Помощь студентам | 1 | 07.06.2009 12:37 |
Упражнения делфи | MAKEDON | Свободное общение | 1 | 26.08.2008 02:31 |