Упражнение K & R 1-20 - Нужны некоторые разъяснения - PullRequest
10 голосов
/ 24 августа 2011

Я не совсем понимаю, о чем спрашивает следующее упражнение:

"Напишите отсоединение программы, которое заменяет вкладки на входе соответствующим количеством пробелов для пробела до следующей остановки табуляции.Предположим, фиксированный набор табуляций, скажем, каждые n столбцов. Должен ли n быть переменной или символическим параметром? "

Может ли кто-нибудь прояснить жирную часть?

Ответы [ 2 ]

20 голосов
/ 24 августа 2011

В этом упражнении вас просят эмулировать поведение вкладок, добавляя правильное количество пробелов, чтобы вывод по-прежнему выравнивался на табуляциях.

Например:

"hello\tworld"

должно стать:

"hello   world"

(табуляция заменена на три пробела), если табуляция идет через каждые 4 столбца (т. Е. N = 4).

Или уточнить, указав, где находятся табуляции:

hello   world
^   ^   ^   ^

Если позиции табуляции каждые 3 столбца, то вы должны получить:

hello world
^  ^  ^  ^

(вкладка была заменена только на 1 пробел)

4 голосов
/ 24 августа 2011

Если вы возьмете пример табуляции, установленной на n = 8, например, если на входе 1 символ, вкладка добавит 7 пробелов (чтобы перейти к столбцу 9).По сути, не всегда добавляйте n пробелов, добавьте количество пробелов, которые приводят вас к соответствующему столбцу для вашего конкретного значения n.

Например:

         1
1234567890123456789
1------>
123---->
More words----->

"Предположим, чтофиксированный набор табуляций "для непрограммистов, в основном.Мы привыкли к тому, что вкладка всегда выравнивается по 4,8 и т. Д.Но в текстовых процессорах позиции табуляции можно настраивать ... поэтому первая вкладка будет выравнивать вас по столбцу 6, вторая - до 30 (например, по небрежно центрированному тексту), а третья - по столбцу 70 (для номеров страниц).или что-то).Здесь он просто указывает, что мы говорим о «вкладках программиста», а не о вкладках текстового процессора.

...