LINUX.ORG.RU

История изменений

Исправление Norong, (текущая версия) :

И это снова я. У меня тут возникла трудность на этапе придумывания алгоритма для ещё одной задачи /* извини, что я так много за помощью обращаюсь; если тебе это надоело - так и скажи, я умолкну или хотя бы перестану дёргать тебя лично :) */

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

Увидев условие про очень длинные строки, я подумал, что нельзя хранить всю считанную строку в массиве, ведь он может оказаться недостаточно длинным, поэтому решил обрабатывать по символам. Без условия про удаление пробелов и табуляций я получил: https://gist.github.com/anonymous/5f070700119f124c2a000a4bd74bf9ce, это было несложно, но вот с табами и пробелами уже проблема.

Я ведь узнаю, нужно ли мне эти табы и пробелы вывести или грохнуть, только тогда, когда дойду до заданного столбца: если у меня до этого столбца включительно есть табы и пробелы в каком-то количестве - то грохаю, а если вдруг в конце есть обычный символ, то оставляю.

Я, конечно, могу хранить в двух переменных кол-во полученных табов и пробелов, сбрасывать их на ноль при получении не-таба и не-пробела, а при сбросе выводить M пробелов и N табов. Таким образом, если я табами и пробелами дохожу до нужного столбца, они не выводятся (после этого можно просто сбросить эти две переменные), а все табы и пробелы, после которых идут обычные символы, будут выведены. Выглядеть это будет абсолютно также, но вот структурно у меня табы и пробелы, которые могли быть перемешаны, теперь выстроятся - сначала одно, потом другое. Не совсем то, что нужно, вроде. Ты не мог бы подсказать мне, в каком направлении думать? Заранее спасибо.

Исходная версия Norong, :

И это снова я. У меня тут возникла трудность на этапе придумывания алгоритма для ещё одной задачи /* извини, что я так много за помощью обращаюсь; если тебе это надоело - так и скажи, я умолкну или хотя бы перестану дёргать тебя лично :) */

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

Увидев условие про очень длинные строки, я подумал, что нельзя хранить всю считанную строку в массиве, ведь он может оказаться недостаточно длинным, поэтому решил обрабатывать по символам. Без условия про удаление пробелов и табуляций я получил: https://gist.github.com/anonymous/5f070700119f124c2a000a4bd74bf9ce, это было несложно, но вот с табами и пробелами уже проблема.

Я ведь узнаю, нужно ли мне эти табы и пробелы вывести или грохнуть, только тогда, когда дойду до заданного столбца: если у меня до этого столбца включительно есть табы и пробелы в каком-то количестве - то грохаю, а если вдруг в конце есть обычный символ, то оставляю.

Я, конечно, могу хранить в двух переменных кол-во полученных табов и пробелов, сбрасывать их на ноль при получении не-таба и не-пробела (и при переводе строки), а при сбросе выводить M пробелов и N табов. Выглядеть это будет абсолютно также, но вот структурно у меня табы и пробелы, которые могли быть перемешаны, теперь выстроятся - сначала одно, потом другое. Не совсем то, что нужно, вроде.