[ Neverall @ 04.05.2008. 12:48 ] @
Code:

#include <stdio.h>
main()
{   
    int c;
    c=getchar();
    while (c!=EOF)  {
                           putchar (c);
                           c=getchar();
                          }
}

Ovaj program kopira i ispisuje utipkani tekst..Zadatak je,1. napraviti program koji ispisuje tekst ali ne ispisuje praznine,tj. razmake ako postoje,i drugi ,2. ako ima više od jednog razmaka onda treba ispisati samo jedan razmak između dviju riječi..
npr 1.
unešeno: asf asdfasdf df
rezultat: asfasdfasdfdf


evo,nadam se da nije preteško..ja nisam uspio,ne znam kako napraviti uvijet da gleda da li je unešen prazan znak pa molim za pomoć...napravio sam slijedeće: sad iz glave ovako nekako: za 1.
Code:

#include <stdio.h>
int main()
{
    int c;
    c=getchar();
    while (c!=EOF)      //sve dok znak nije EOF
                 {
                              while (c==" ")// ako je znak "  " praznina,
                              getchar();    //onda učita slijedeći..ne znam zašto ne radi..
                    {
                           putchar (c);   //ispisuje znak
                           c=getchar();  // učitava novi znak
                    }
                 }
}

ALI NE RADI,MOLIM POMOĆ ZA 1. i 2.


[Ovu poruku je menjao X Files dana 16.09.2008. u 20:13 GMT+1]
[ karas @ 04.05.2008. 13:16 ] @
Dvostruki navodnici se koriste za stringove a jednostruki za karaktere, tako da ne možeš raditi poređenje
Code:

while (c == " ")

već
Code:

while (c == ' ')

Dalje, šta podrazumevaš pod praznim znakom: space, tab, new line? Proveru za ove karaktere možeš da radiš sa
Code:

if (c == ' ')

odnosno
Code:

if (c == '\\t')

odnosno
Code:

if (c == '\\n')

Još bolje, da ne bi proveravao sve moguće vrednosti, možeš da koristiš isspace() koja će uraditi proveru za bilo koju "belinu" (pogledaj u dokumentaciji koji su sve to karakteri).
Dakle, za 1) možeš da staviš u petlji uslov poput
Code:

while (c != EOF)
{
  if (isspace(c))
    putchar (c);
  c = getchar();

Za 2) možeš da uvedeš neki brojač koji će pamtiti da li je pre toga karakter bio belina ili ne.
[ Neverall @ 04.05.2008. 13:31 ] @
program radi super nako što sam na tipkovnici pronašao tipku za navodnike ' '...imao sam problem i s tim.hehe...nego može pomoć za drugi problem ,kako napraviti brojač...prbat ću sam ali za svaki slučaj može i mala pomoć,tek učim malo programirati...
[ karas @ 04.05.2008. 18:56 ] @
Recimo pre petlje postaviš
Code:

int counter = 0;

koji će brojati broj belina.
Unutar petlje rezonuješ ovako:
1. ako je counter veći od nule, to znači da je unutar dela teksta koji ima beline pa tu imaš dva slučaja:
1.1. ako je tekući znak belina, onda još nisi stigao do kraja dela sa belinama, pa povećaj counter za 1;
1.2. ako tekući znak nije belina, onda si stigao na kraj dela sa belinama, vrati counter na nulu i odštampaj jednu belinu
2. ako je counter jednak nuli, onda i ovde imaš dva slučaja:
2.1. ako je tekući znak belina, povecaj counter za jedan
2.2. ako tekući znak nije belina, ne radi ništa

Ako je prethodno rezonovanje dobro, kod bi bio oblika
Code:

if (counter > 0)
{
  if (isspace(c))
    counter++;
  else
  {
    counter = 0;
    putchar(c);
  }
}
else
{
  if (isspace(c))
    counter++;
}


Zapravo, brojač nije ni potreban ako te ne zanima broj belina, dovoljan je "flag" koji će biti true ili false zavisno od toga da li se nalaziš unutar belina ili van, ali i ovo bi trebalo da posluži.