LINUX.ORG.RU

простенькая программа


0

0

начал значится си учить и вот такая задача... ей богу вьехать не могу... неверное от жары %)

Напишите прогармму, которая копирует ввод на вывод, заменяя при этом каждую последовательность из одного или более пробелов на один пробел.

оно легкая это факт, но наверно опыта или мозгов не хватает :(

напишите как она должна выглядить на Си

anonymous

tr -s ' '
Ну исходники tr посмотри.

ansky ★★★★★
()

не надо на си

anonymous
()

[ragazza ~] cat 1.c
#include<stdio.h>
int main() {
 int c='x',cold='y';
 while(26==26) {
  if(c==EOF) break;
  c=fgetc(stdin);
  if(cold==' ' && c== ' ') continue;
  cold=c;
  fputc(c,stdout);
 }
 return 0;
}

SadStork
()

#include<stdio.h>
int main(void) {
   int b=1,c;
      while( (c=getchar())!=EOF )switch(c){
         case ' ':
            if(b==' ')
               break;
         default:
            putchar(c);
            b=c;
            break;
      }
   return 0;
}

Die-Hard ★★★★★
()

Во, еще извращеннее:
#include<stdio.h>
int main(void) {
   int i=1,c[2]={1,1};
      while( (c[i^=1]=getchar())!=EOF )switch(c[i]){
         case ' ':
            if(c[i^1]==' ')
               break;
         default:
            putchar(c[i]);
      }
   return 0;
}

Die-Hard ★★★★★
()

> Напишите прогармму, которая копирует ввод на вывод,
> заменяя при этом каждую последовательность
> из одного или более пробелов на один пробел.

Академичный пример:

#include <stdio.h>

int main(void)
{
  int c;

  c = getchar();
  while (c != EOF) {
    putchar(c);
    if (c == ' ')
      while (((c = getchar()) == ' ') && (c != EOF));
    else
      c = getchar();
  }
  return 0;
}

Если имеются в виду не только пробелы, а все "прозрачные" символы (табы, переводы строки и т.п.) вместо c == ' ' лучше использовать isspace(c).

А вообще, ты лучше по книжке какой-нибудь учи, чем по примерам. А там уже все нарастет.

Rem
()
Ответ на: комментарий от Rem

 А еще можно так:

#include<stdio.h>
int main(void) {
   int c;
      while( (c=getchar())!=EOF )switch(c){
         case ' ':
            putchar(c);
            do
             if( (c=getchar())==EOF )return 0;
            while(c==' ');
         default:
            putchar(c);
      }
   return 0;
}

Все, лень работать, пошел за пивом.

Die-Hard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.