thermite
Новые
- Регистрация
- 13 Фев 2011
- Сообщения
- 23
- Реакции
- 0
- Баллы
- 0
Заменить пробелы на табуляцию
Всем привет, вот задание:
Напишите программу, которая бы заменяла пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций и дополнительных пробелов - так, чтобы заполнять то же пространство. Если для заполнения места до следующей границы табуляции требуется один пробел или один символ табуляции, то что следует предпочесть?
=======================
Я написал код, уверен что в он ошибочный, тут же родилась идея сначала при встрече пробела присвоить вместо пробела табуляцию, а потом отсчитать сколько нужно затереть пробелов, это я еще не написал, а пока только в планах, может это самое верное решение, тогда код думаю станет намного компактней! Как думаете, что подскажете? Вот картинка и код.
Всем привет, вот задание:
Напишите программу, которая бы заменяла пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций и дополнительных пробелов - так, чтобы заполнять то же пространство. Если для заполнения места до следующей границы табуляции требуется один пробел или один символ табуляции, то что следует предпочесть?
=======================
Я написал код, уверен что в он ошибочный, тут же родилась идея сначала при встрече пробела присвоить вместо пробела табуляцию, а потом отсчитать сколько нужно затереть пробелов, это я еще не написал, а пока только в планах, может это самое верное решение, тогда код думаю станет намного компактней! Как думаете, что подскажете? Вот картинка и код.
Код:
#include <stdio.h>
int main()
{
int MAX = 8; // табуляция, максимальная величина пробелов.
int MIN = 1; // табуляция, минимальная величина пробела.
int n = 0; // счетчик каждого символа.
char c; // присваивает символ входящего потока.
int i = 0; // счетчик пробелов.
while( ( c = getchar() ) != EOF ) // присвоить, пока входящий поток не встретил конец.
{
if( n == MAX ) // если счетчик символов равен границе табуляции,
n = 0; // то обнулить счетчик.
n++; // увеличить счетчик.
if( c == ' ' ) // если встретился пробел.
{
i++; // увеличить счетчик пробелов.
if( i == ( MAX - n ) ) // если граница табуляции состовляет один пробел,
{
c = '\t'; // то символу пробела присвоить табуляцию.
i = 0; // обнулить счетчик пробелов.
}
if( i > MIN ) // если счетчик пробелов больше минимального числа пробелов в табуляции.
if( ( i == ( MAX - n ) ) // И если пробелов достаточно для табуляции,
{
i = n; // то счетчику пробелов присвоим счетчик каждого символа.
while( i < MAX ) // запустим цикл, пока не сотрем все пробелы,
{
printf("\b"); // сотрем пробелы backspace.
i++; // увеличим счетчик пробелов.
}
c = '\t'; // а после присвоим символу табуляцию.
}
}
}