Свободен |
26-03-2010 - 17:09 Наверное многие начинали изучать Си с книги Кернигана и Ритчи. Так вот у меня возникли затруднения с одним упражнением. Упражнение 1.16. Доработайте главный модуль программы определения самой длинной строки так, чтобы она выводила правильное значение для какой угодно длины строк входного потока, насколько это позволяет текст. Код программы:
Как я понял, изменения должны быть только в main. Главная проблема: куда засунуть строку неизвестной длины, стремящейся к бесконечности. Идея была задать безразмерный массив, но сделать этого у меня не получилось. Вобщем помогите сделать упражнение или дайте ссылку на вменяемое решение. зы: могу отблагодарить Вебманями, очень уж хочется разобраться с этим упражнением. Это сообщение отредактировал Rodriga-Gamilton - 26-03-2010 - 17:11 |
||||||
Свободен |
26-03-2010 - 23:18 http://clc-wiki.net/wiki/K&R2_solutions:Ch...r_1:Exercise_16 Решение Richard Heathfield игнорируйте. Он читер. |
||||||
Свободен |
31-03-2010 - 15:18
Да все там читеры и халявшики. Они только считают длину строки, но не выводят ее. Причем считают вместе с нулевым символом. Неплохая идея у arnuld, но с реализацией хреновато. Спасибо за ссылку, что-то я не догуглил до нее. Вобщем проблема пока еще существует, но, надеюсь, не долго ей жить осталось. |
||||||
Свободен |
31-03-2010 - 16:09
Правильно. Одной из самых сильных сторон программиста является точное следование условиям задачи, а не изобретание того, о чем не говориться или додумывание за постановщика. Кроме того, задание дается совсем не в контексте динамических массивов. Попробуйте внимательно прочесть задание. Revise the main routine of the longest-line program so it will correctly print the length of arbitrarily long input lines, and as much as possible of the text. Последнее выделение - as much as possible не значит лимит памяти или жесткого диска. А лимит, существующий и указанный в задаче. Задача - исправить, а не переписать. Не умножайте сущности сверх необходимости. :) |
||||||
Свободен |
31-03-2010 - 16:49
В переведонном учебнике в примере отсутствует вывод длины строки, есть только вывод строки. Отсюда и все мои проблемы с выводом строки неизвестной длины. as much as possible of the text, т.е. имеется в виду текст программы, а не входной поток? Мдэ, столько времени потрачено на битвы с мельницами. |
||||||
Свободен |
31-03-2010 - 17:22
Давайте посмотрим на постановку на русском языке (кстати первый раз вижу такой перевод): "какой угодно длины строк входного потока, насколько это позволяет текст" Попробуйте ответить на вопрос: какой текст ограничивает? Без "ну", "может быть" и "предполагаю". Не ответите. Ограничивает не текст, а операционное окружение. А почему? Потому что в оригинальной задаче "длину и столько, сколько возможно текста". Ограничение: MAXLINE. Еще раз. Задача: чтобы корректно выводила результат. Посмотрите на функцию getline. Она возвращает строку с символом каретки. Просто так? Сами решите? :)
Этим все, без исключения, страдают. Это сообщение отредактировал JeyLo - 31-03-2010 - 17:25 |
||||||
Свободен |
01-04-2010 - 12:11 Спасибо за помощь. Гадить в репутацию не пускают, увы. |
||||||
Свободен |
01-04-2010 - 17:35
Не за что. Приходите еще. |