Замена двух пробелов на один
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Доброго времени суток)
Старая добрая книга Ритчи по языку Си...
Дело в том, что никак не могу написать работающий код для программы, которая бы копировала ввод на вывод и при этом заменяла 2 стоящих подряд пробела на один (как я понял, в режиме реального времени). Спустя многократных попыток написать такую программу, пришел к такому решению:
Написал, скомпилировал, запустил... в итоге машина не слушается хозяина =(
Просьба указать, что в коде не так. И правильна ли вообще сама идея в корне?
Дрессировал плохо ;)
1) Постановка задачи нечеткая. Что значит «заменяла 2 стоящих подряд пробела на один»? На входе 2 пробела — на выходе один пробел — это понятно. На входе 3 пробела — на выходе один пробел или два пробела (пара пробелов схлопнулась в один + один непарный пробел). Ну и так далее. Исходя из контекста программы с учетом комментариев, видимо подразумевается "заменяла 2 и более стоящих подряд пробелов на один". Из этого и будем исходить.
2) В коде «не так» всё. Самое минимальное, почему программа «не слушается»:
... и никакого копирования ввода на вывод нет вообще.
3) Такие задачи хорошо решаются с помощью конечных автоматов (тыц, тыц). В вашем случае это будет выглядеть примерно так: