![Фото](https://forum.ee/public/style_images/forum/profile/default_large.png)
№1-7(2е издание) Керниган & Ритчи
Started By bAn, фев 13 2005 14:25
2 ответов в этой теме
#1
Отправлено 13 февраля 2005 - 14:25
Упражнение 1-7.
Напишите программу, которая копирует ввод на вывод, заменяя при этом каждую последовательность из одного или более пробелов на один пробел.
Вот мой подход но он работает не так как надо... первый символ слова срезается:
#include <stdio.h>
main(){
int c;
int in;
while (( c = getchar() ) != EOF){
if (c == ' '){
in = 0;
--c;
}
else if(in == 0){
in=1;
c=' ';
}
putchar©;
}
}
Напишите программу, которая копирует ввод на вывод, заменяя при этом каждую последовательность из одного или более пробелов на один пробел.
Вот мой подход но он работает не так как надо... первый символ слова срезается:
#include <stdio.h>
main(){
int c;
int in;
while (( c = getchar() ) != EOF){
if (c == ' '){
in = 0;
--c;
}
else if(in == 0){
in=1;
c=' ';
}
putchar©;
}
}
#2
Отправлено 13 февраля 2005 - 16:57
#include <stdio.h> int main(void) { int ch; int space = 0; while ((ch = getchar()) != EOF) { if (ch == ' ') { if (space == 0) { putchar(ch); space = 1; } } else { putchar(ch); space = 0; } } return 0; }
Добавлено в [mergetime]1108306677[/mergetime]
ошибка в том, что ты печатешь все пробелы, 'in' никак не используется, так как есть else. кроме того, ошибка еше в --c; --c это c = c -1; то есть ты от ASCII кода пробела (32) отнимаешь 1 и присваеваешь c. получается символ с кодом 31, который является непечатным.Упражнение 1-7.
Напишите программу, которая копирует ввод на вывод, заменяя при этом каждую последовательность из одного или более пробелов на один пробел.
Вот мой подход но он работает не так как надо... первый символ слова срезается:
#include <stdio.h>
main(){
int c;
int in;
while (( c = getchar() ) != EOF){
if (c == ' '){
in = 0;
--c;
}
else if(in == 0){
in=1;
c=' ';
}
putchar©;
}
}
Сообщение изменено: V^v (13 февраля 2005 - 17:01 )
int main(void)