Ощутил нереальное ограничение своего аналитического аппарата в головном мозгу... :(
Делал задание из первой главы Кернигана и Ритчи. Язык программирования Си. И не понял как его решить...
Задание звучит так: Упражнение 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 - это рудимент от моего прошлого алгоритма: счетчика пробелов
Делал задание из первой главы Кернигана и Ритчи. Язык программирования Си. И не понял как его решить...
Задание звучит так: Упражнение 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 - это рудимент от моего прошлого алгоритма: счетчика пробелов
Комментариев нет:
Отправить комментарий