Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Ispis teksta bez blankova, regulisanje broja blankova

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova

[ Pregleda: 2067 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neverall

Član broj: 51734
Poruke: 268
*.dsl.optinet.hr.



Profil

icon [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova04.05.2008. u 12:48 - pre 194 meseci
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]
Never
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova04.05.2008. u 13:16 - pre 194 meseci
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.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Neverall

Član broj: 51734
Poruke: 268
*.dsl.optinet.hr.



Profil

icon Re: [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova04.05.2008. u 13:31 - pre 194 meseci
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...
Never
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova04.05.2008. u 18:56 - pre 194 meseci
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.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Ispis teksta bez blankova, regulisanje broja blankova

[ Pregleda: 2067 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.