Перейти к содержимому

Фото
- - - - -

№1-7(2е издание) Керниган & Ритчи


  • Вы не можете создать новую тему
  • Please log in to reply
2 ответов в этой теме

#1 bAn

bAn
  • Пользователь
  • 23 сообщений

Отправлено 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©;
}

}
  • 0

#2 V^v

V^v
  • Пользователь
  • 316 сообщений

Отправлено 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]

Упражнение 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©;
    }

}

Просмотреть сообщение

ошибка в том, что ты печатешь все пробелы, 'in' никак не используется, так как есть else. кроме того, ошибка еше в --c; --c это c = c -1; то есть ты от ASCII кода пробела (32) отнимаешь 1 и присваеваешь c. получается символ с кодом 31, который является непечатным.

Сообщение изменено: V^v (13 Февраль 2005 - 17:01 )

  • 0
int main(void)

#3 bAn

bAn
  • Пользователь
  • 23 сообщений

Отправлено 13 Февраль 2005 - 20:04

Мде, как это я сам не догадался :unsure: ... В любом случае спасибо большое :P . Возникающие вопросы задавать буду тут.

Сообщение изменено: bAn (13 Февраль 2005 - 20:06 )

  • 0