Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2016, 18:15   #1
cubazis\0
Новичок
Джуниор
 
Регистрация: 22.12.2016
Сообщений: 1
По умолчанию Не могли бы вы оценить этот код?

Не могли бы вы оценить и этот код?
Код:
void entab(){
    int c; // c - переменная хранящая значение текущего символа
    int nb = 0; // nb - необходимое колличество пробелов
    int nt = 0; // nt - необходимое колличество табуляций
    int pos = 1; // pos - позиция текущего символа в тексте
    while ((c = getchar()) != EOF){
        if (c == ' ') { // если встречаем пробел
            ++pos; // сдвигаем указатель на следующий за ним элемент
            if ((pos % TABINC) == 0) { // проверяем являится ли следующий элемент границей табуляции, если да - копим табуляцию
                ++nt;
                nb = 0;
            }
            else { // иначе - копим пробел
                ++nb;
            }
        }
        else if (c == '\n') { // если конец строки
            //выводим накопившиеся пробелы, если таковые были до конца строки, табуляции не потеряются
            // потому как табуляции естественным образом выводятся в блоке else
            for (; nb > 0; --nb) {
                putchar('+');
            }
            putchar(c);
            nb = 0;
            nt = 0;
            pos = 1;
        }
        else { // вывод символов не являющихся пробелами, выводятся в том числе табуляции
            //сначала выводим все накопившиеся табуляции
            for (; nt > 0; --nt) {
                putchar('~');
            }
            //затем выводим все накопившиеся пробелы
            for (; nb > 0; --nb) {
                putchar('+');
            }
            // если встречаем табуляцию - просто выводим ее
            if(c == '\t'){
                putchar('~');
            }
            else { // выводим любой другой символ
                putchar(c);
            }
            ++pos;
        }
    }
}
cubazis\0 вне форума Ответить с цитированием
Старый 23.12.2016, 08:40   #2
Андрей 93
Люблю жизнь
Форумчанин
 
Аватар для Андрей 93
 
Регистрация: 01.12.2009
Сообщений: 193
По умолчанию

Переменная "с" должна быть связана с указателем pos?
Не стыдно не уметь, стыдно не учиться.
Андрей 93 вне форума Ответить с цитированием
Старый 23.12.2016, 09:59   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Написан код так себе. Если работает - пусть будет, всё равно он кроме вас никому не нужен.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что значит этот код nikytt JavaScript, Ajax 0 22.03.2016 23:51
Как понять этот код *PB* Общие вопросы Delphi 6 15.12.2015 12:54
Народ обьясните этот код alexz29 Общие вопросы C/C++ 3 20.06.2010 06:52
Что делает этот код? lucky Общие вопросы Delphi 4 17.06.2009 17:02
Вы могли бы оценить фото? Nadushkka Свободное общение 3 30.07.2007 01:25