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

Program koji broji reci

[es] :: C/C++ programiranje :: C/C++ za početnike :: Program koji broji reci

[ Pregleda: 2973 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Program koji broji reci16.01.2012. u 19:54 - pre 149 meseci
Pokusavam da napisem program koji broji reci. Hocu da korisnik izmedju reci moze da unosi ne samo space, nego i tabulator ili enter.

Code:

#include <stdio.h>
#define IN 1
#define OUT 0

int main()
{
  char c;
  int stanje;
  int br_reci = 0;
  
  stanje = OUT;
  
  while ((c = getchar()) != EOF)
  {
    if (c != ' ' && c != '\n' && c != '\t')
      stanje = IN;
    else
    {
      while (c == ' ' || c == '\n' || c == '\t')
      {
    stanje = OUT;
    c = getchar();
      }
      br_reci++;
    }
  }

  printf("Broj reci: %d\n", br_reci);
  
  return 0;
}


Medjutim, jedino ako pre EOF karaktera unesem neki blanko karakter, ispisace se tacan broj reci. U protivnom ce se ispisati da ima jedna rec manje nego sto treba. S druge strane, ako pre poslednjeg printf-a stavim
Code:
br_reci++;
onda ce mi se uvek ispisati tacan broj reci, osim ako pre EOF karaktera unesem neki blanko karakter.

Moze li mi neko pomoci kako to da ispravim?
 
Odgovor na temu

FooLControL
Serbia

Član broj: 168531
Poruke: 74
77.243.22.*



+8 Profil

icon Re: Program koji broji reci17.01.2012. u 00:23 - pre 149 meseci
Evo iz glave, valjda radi, nemam gde da testiram da bih proverio.

Code:

int main()
{
  char c;
  int stanje;
  int br_reci = 0;
  
  stanje = OUT;
  
  while ((c = getchar()) != EOF)
  {
    if (c != ' ' && c != '\n' && c != '\t')
      if(stanje = OUT) 
      {
          br_reci++;
          stanje = IN;
      }
    else
    {
          stanje = OUT;
     }
      
    }
  }

  printf("Broj reci: %d\n", br_reci);
  
  return 0;
}

 
Odgovor na temu

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Program koji broji reci17.01.2012. u 21:05 - pre 149 meseci
Ne radi :( Svaki put kaze "Broj reci: 0"
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
..178.212.adsl.dyn.beotel.net.



+18 Profil

icon Re: Program koji broji reci17.01.2012. u 21:23 - pre 149 meseci
Code:

int main()
{
  char c;
  int stanje;
  int br_reci = 0;
  
  stanje = OUT;
  
  while ((c = getchar()) != EOF)
  {
    if (c != ' ' && c != '\n' && c != '\t')
   {
            br_reci++;  
    }
  }

   if ((c=getchar()) == EOF)
  {
        br_reci++;  
  }

  printf("Broj reci: %d\n", br_reci);
  
  return 0;
}


Nisam dugo radio u C-u ali probaj ovako.
E da i za šta ti služi stanje?
 
Odgovor na temu

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Program koji broji reci17.01.2012. u 22:07 - pre 149 meseci
Izgleda da ni ovo ne prolazi... Sada broji slova. Zbog ovog dela:

Code:
while ((c = getchar()) != EOF)
{
  if (c != ' ' && c != '\n' && c != '\t')
    br_reci++;  
}


Dakle, za svaki unet karakter koji nije space, novi red i tabulator, broj reci ce se inkrementirati.

Ta promenjiva stanje bi trebalo da oznacava da li se trenutno nalazimo unutar reci ili van reci, tj. "u blankovima". Pokusavala sam da nju skroz izbacim, ali mi tek onda ne radi nikako.
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
..178.212.adsl.dyn.beotel.net.



+18 Profil

icon Re: Program koji broji reci17.01.2012. u 22:10 - pre 149 meseci
Code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int c,b;
   int br_reci = 0;



  while ((c = getchar())!= EOF)
  {
    if (c == ' ' || c == '\n' || c == '\t')
   {
            br_reci++;
    }
    b = c;
  }

   if (c == EOF && b !=' ')
  {
        br_reci++;
  }

  printf("Broj reci: %d\n", br_reci);

  return 0;
  
}


Evo male ispravke, radim napamet...probaj sad. Pa javi...
 
Odgovor na temu

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Program koji broji reci17.01.2012. u 22:21 - pre 149 meseci
Skoro pa radi super :) Jedino sto ubraja i blanko karaktere u reci ako se unese vise od jednog blanko karaktera.
p.s. Verovatno si hteo da napises
Code:
char c, b;
?
 
Odgovor na temu

FooLControL
Serbia

Član broj: 168531
Poruke: 74
77.243.20.*



+8 Profil

icon Re: Program koji broji reci17.01.2012. u 22:24 - pre 149 meseci
Nije me mrzelo da instaliram C prvi put na masini, jer mi je cudno da nije radio kod, bio je problem u jednoj zagradi. Moras malo i sam da se potrudis, da vidis gde bi mogla da bude greska.

Code:

#include <stdio.h>
#include <stdlib.h>
#define IN 1
#define OUT 0

int main()
{
  char c;
  int stanje;
  int br_reci = 0;

  stanje = OUT;

  while ((c = getchar()) != EOF)
  {
    if (c != ' ' && c != '\n' && c != '\t')
    {
       if(stanje == OUT)
      {
          br_reci++;
          stanje = IN;
      }
    }

    else
    {
          stanje = OUT;
     }
  }

  printf("Broj reci: %d\n", br_reci);

  return 0;
}

 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
..178.212.adsl.dyn.beotel.net.



+18 Profil

icon Re: Program koji broji reci17.01.2012. u 22:27 - pre 149 meseci
Dodaj onda samo ovo

Code:
if (b != ' ' && c == ' ' || c == '\n' || c == '\t')
   {
            br_reci++;
    }
    b = c;
  }


EOF je ustvari negativna vrednost -1.
nije karakter ako se ne varam.
Pogledaj malo po netu.
 
Odgovor na temu

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Program koji broji reci17.01.2012. u 22:37 - pre 149 meseci
@FooLControL

Izvini. I hvala.

@mish_ns

Opet nije to to. Ali hvala svejedno!
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
..178.212.adsl.dyn.beotel.net.



+18 Profil

icon Re: Program koji broji reci17.01.2012. u 22:51 - pre 149 meseci
Code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char c,b;
   int br_reci = 0;


   while ((c = getchar())!= EOF)
  {

    if ((b != ' '  && b != '\n' && b != '\t') && (c == ' ' || c == '\n' || c == '\t'))
   {
            br_reci++;
    }
    b = c;
  }

   if (c == EOF && (b !=' ' && b!='\t' && b!='\n'))
  {
        br_reci++;
  }

  printf("Broj reci: %d\n", br_reci);

  return 0;

}


E ovo mora da radi... :)
Kao što reče FooLControL Moraš malo i sam da se potrdiš...
Dao sam primer za više blanko znakova trebao si samo malo korigovati uslov i za više tabova i entera...
Probaj i ovo čisto da vidiš dal radi...
 
Odgovor na temu

pitomir
Beograd

Član broj: 268651
Poruke: 104
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Program koji broji reci17.01.2012. u 23:10 - pre 149 meseci
Sad radi. Hvala!

Naravno da sam prethodno pogledala vase kodove i cak ih prepisala na papir da bih ih bolje razumela, ali nije mi palo na pamet da ima neka sintaksna greska. Malo mi je cudno da ja trazim vama gresku, posto sam pocela da ucim C pre mesec dana, dakle, jos sam duduk.
 
Odgovor na temu

mish_ns
Miloš Krstin

Član broj: 159930
Poruke: 1105
*.dynamic.isp.telekom.rs.



+18 Profil

icon Re: Program koji broji reci18.01.2012. u 06:00 - pre 149 meseci
OK. Najbitnije da si našla rešenje.
Cilj je da ti damo ideju kako da rešiš zadatak, a ne da ti damo konačno rešenje.
Samim tim ćeš i bolje naučiti.
Pozdrav...

PS. Kolegino rešenje je elegantnije :)
 
Odgovor na temu

vlada_vlada
Uber
Beograd

Član broj: 259596
Poruke: 68
*.dynamic.sbb.rs.



+7 Profil

icon Re: Program koji broji reci18.01.2012. u 09:54 - pre 149 meseci
Evo i malo kraceg resenja (uz isspace() f-iju).

Code:

#include <ctype.h>
...
char p, c = ' ';

while(p=c, (c=getchar()) != EOF)
    if( !isspace(p) && isspace(c) ) br_reci++;

if( !isspace(p) ) br_reci++;
 
Odgovor na temu

dragancesu
subotica

Član broj: 38340
Poruke: 2189
*.adsl.eunet.rs.



+73 Profil

icon Re: Program koji broji reci19.01.2012. u 15:11 - pre 149 meseci
Original je http://www.gnu.org/software/cf...node/Source-of-wc-command.html

Linux ima komandu wc koja za to sluzi

Juce sam hteo da postavim ali sajtovi gde se ovo moze naci su "strajkovali"

Pomozite Micro$oftu u borbi protiv piraterije, poklonite prijatelju Linux
 
Odgovor na temu

idb
Ivan Bulic
Beograd

Član broj: 4436
Poruke: 402



Profil

icon Re: Program koji broji reci19.01.2012. u 21:37 - pre 149 meseci

char * strtok ( char * str, const char * delimiters );
Split string into tokens

Code:

#include <string.h>
// .....

ili pogledas ovu temu:
http://www.elitesecurity.org/t...edosled-reci-inverznom-poretku
:)
Pozdrav.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Program koji broji reci

[ Pregleda: 2973 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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