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

Фото
- - - - -

№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