Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program w C zliczający słowo

26 Sty 2009 23:50 1672 7
  • Poziom 10  
    Witam i proszę o pomoc w napisaniu programu w C ,chodzi o program który zlicza liczbę wyświetleń słowa np kot w tekście.
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 21  
    w pętli przepuszczasz wszystkie wyrazy i robisz warunek
    if(wyraz =='kot')licznik++;
  • Poziom 10  
    Program z linka powyżej pokazuje pytanie i trzeba znać na nie odpowiedź a jak się nie zgadnie to pyta do bólu. Mi chodzi o program co jest przykładowo dany plik txt i w tym pliku jakieś słowo powtarza się określoną liczbę razy przykładowo 2,5,9, proszę o poprawienie tego co napisałem.



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

    int main()
    {
         int t[1000];
         int liczba=1;
         int i;

        for (i=0; (t[i] = getchar()) != '\0'; i++);  // pobieranie tekstu do tablicy
         t[i] = '\0';  // dodawanie informacji, gdzie w tablicy konczy sie tekst
         i=0;
         while (t[i] != '\0') // zakoncz petle gdy znakiem jest EOF lub znak konca tekstu
         {
          // jesli jest znak konca wiersza i myslnik w nowym, to zwieksz licznik o 1
               if ((t[i]=='\n') && (t[i+1]=='-')) { 
                liczba++;  // zwieksza licznik zdan o 1
               }
               i++;
         }
         printf("%d\n", liczba); // wyswietl liczbe pozycji w dialogu
        system("PAUSE");  // czekaj na nacisniecie przycisku
         return 0;
    }
  • VIP Zasłużony dla elektroda
    fixcom napisał:
    Mi chodzi o program co jest przykładowo dany plik txt i w tym pliku jakieś słowo powtarza się określoną liczbę razy przykładowo 2,5,9, proszę o poprawienie tego co napisałem.

    To dopiero dowcip. Coś w stylu "mam program, przeróbcie mi go na zupełnie inny". Nazywasz to poprawianiem?

    Pozdrawiam,
    Dr.Vee
  • Poziom 10  
    Dr.Vee napisał:
    fixcom napisał:
    Mi chodzi o program co jest przykładowo dany plik txt i w tym pliku jakieś słowo powtarza się określoną liczbę razy przykładowo 2,5,9, proszę o poprawienie tego co napisałem.

    To dopiero dowcip. Coś w stylu "mam program, przeróbcie mi go na zupełnie inny". Nazywasz to poprawianiem?

    Pozdrawiam,
    Dr.Vee



    Pomyliłem się i dałem nie ten program można było w inny sposób to zaakcentować! Nie żeruje na ludziach i nic im nie karze za siebie robić!
  • VIP Zasłużony dla elektroda
    Uruchamiałeś chociaż ten (poprawiony) program?
    Przecież on nie zadziała.

    1) getchar zwraca EOF, a nie '\0', po napotkaniu końca strumienia
    2) typem zwracanym przez getchar jest int, a nie char, więc jak przypiszesz t[i] = getchar(), to już nie sprawdzisz czy t[i] == EOF.

    Co do tego programu który masz napisać, to nie napisałeś, czy ma zliczać wystąpienie jednego słowa, czy kilku, itp itd.

    Poczytaj o funkcji strstr().

    Pozdrawiam,
    Dr.Vee
  • Poziom 10  
    Code:
    #include <stdio.h>
    
    #include <stdlib.h>

    int main()
    {
         char t[1000];
         char szukany[1000];
         int liczba=1;
         int i=0;
         int j=0;
     int     litery=0;
     int wyrazy =0;
     //wprowadzamy tekst
        while((t[i] = getchar()) != '\n'){i++;}; 
         t[i] = '\0'; 
         
         //wprawadzamy tekst ktory bedziemy szukac
             while((szukany[j] = getchar()) != '\n'){j++;}; 
         szukany[j] = '\0'; 
         
         //dlugosc 1 tablicy
         int d1=0;
         while (t[d1]!='\0'){d1++;}
         
         //dlugosc 2 tablicy
         int k=0;
         while (szukany[k]!='\0'){k++;}

     
                       
                        int licz=0;                   
                      while(t[licz]!='\0'){
                               int h=0;
                               litery=0;
                               for(h;h<k;h++){
                                              if (licz+h<=d1 && szukany[h]==t[licz+h]){
                                                 litery++;
                                              }else{
                                                   
                                                    break;     
                                              }
                                             

                               }   
                               if (litery==k){
                                  wyrazy++;
                               }                         
                               
                             licz++;
                                     
                         }

    printf("%d\n", wyrazy);
        system("PAUSE"); 
         return 0;
    }

    Czy to jest dobrze?