On Mon, Jun 20, 2016 at 04:37:08PM +0200, Edward Bartolo wrote: [cut]
> > On page Page 34 Exercise 1-9 > "Write a program to copy its input to its output, replacing each > string of blanks one ore more blanks by a single blank." > > I wrote the following, tested it, and it seems to work, but I think it is > too complicated. Any suggestions? > > -------------------------- > #include <stdio.h> > > int main() > { > int c, d = 0; > while ((c = getchar()) != EOF) { > if (c != ' ') { > d = 0; > putchar(c); > } > if (c == ' ' && d == 0) { > putchar(c); > d = 1; > } > } > > return 0; > } > ---------------------------- It looks plain and correct to me :) An equivalent version which avoids the chain of ifs might read: ------ #include <stdio.h> int main (int argc, char *argv[]){ int c,d=0; while((c=getchar()) != EOF){ putchar(c); while(c == ' ' && (c=getchar()) != EOF ){ d=1; } if (d){ putchar(c); } d=0; } } ----- which can be further streched into: ----- #include <stdio.h> int main (int argc, char *argv[]){ int c,d=0; while((c=getchar()) != EOF){ c=putchar(c); while(c == ' ' && (c=getchar()) != EOF && (d=1)); if (d && putchar(c) && (d=0)); } } ----- But, admittedly, sacrifying quite a lot in terms of readability without a reason. WD KatolaZ -- [ ~.,_ Enzo Nicosia aka KatolaZ - GLUGCT -- Freaknet Medialab ] [ "+. katolaz [at] freaknet.org --- katolaz [at] yahoo.it ] [ @) http://kalos.mine.nu --- Devuan GNU + Linux User ] [ @@) http://maths.qmul.ac.uk/~vnicosia -- GPG: 0B5F062F ] [ (@@@) Twitter: @KatolaZ - skype: katolaz -- github: KatolaZ ] _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng