вторник, 8 сентября 2015 г.

Первый фейл неразвитого математикой мозга.

Ощутил нереальное ограничение своего аналитического аппарата в головном мозгу... :(

Делал задание из первой главы Кернигана и Ритчи. Язык программирования Си. И не понял как его решить...

Задание звучит так: Упражнение 1.9. Напишите программу, копирующую символы ввода в выходной поток и заменяющую стоящие подряд пробелы на один пробел.


Как я думал сделать:
в цикле while поставить счетчик на пробелы, если пробела более чем один, то заменять символ на '\b', т.е. удаляя этот пробел... все вариации приводили в тупик - что-то удалялось не то, иногда пробелы не удалялись...

В итоге использовал чит: http://www.cyberforum.ru/c-beginners/thread1297310.html

Сейчас моё решение выглядит так:

 long nc, s;
 s = 0;

 while ((nc = getchar()) != EOF)
    {
        if (nc == ' ')
        {
           putchar(nc);
           while ((nc = getchar()) == ' ')
            ;
        }
        putchar(nc);
    }

P.S.: s - это рудимент от моего прошлого алгоритма: счетчика пробелов 

Комментариев нет:

Отправить комментарий