Stuktura – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Stuktura – C / C++ – Fórum – Programujte.comStuktura – C / C++ – Fórum – Programujte.com

 

LFS0
Newbie
29. 12. 2012   #1
-
0
-

mohl by mi někdo říct v čem je chyba že program nenačítá a nepočítá slova a vypisuje nesmyslné znaky ?

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

int main()
{
    FILE *fr;
    fr = fopen("text.txt","r");

    if(!fr)
    puts("soubor nenalezen");

    typedef struct slova {
      int pocet;
      char slovo[50];
    } slova;

    int counter = 0;
    int pocet_slov = 0;
    char c;
    while((c = fgetc(fr)) != EOF){
    counter ++;
    if(c == ' ' || c == '\n')
    pocet_slov ++;
    };
    rewind (fr);

    char *obsah;
    obsah = (char *) malloc(counter + 1);
printf("hnuj\n");
    int f = 0;
    char q;
    while((q = fgetc(fr)) != EOF){
    obsah[f] = q;
    f++;
    };

    slova seznam[30];

    int p = 0;
    int znak = 0;


seznam[p].slovo[0] = '\0';

    char pole[20];
    pole[0] = '\0';
    while((fscanf(fr,"%s" , pole)) != EOF){
       for(int w = -1; w < p; w++)
         if(strcmp(seznam[w].slovo,pole) == 0){
        seznam[w].pocet++;
        return 0;}
   else{
   strcpy(seznam[p].slovo,pole);
   seznam[p].pocet++;
   }

    p++;
    free(pole);
    };
    for(int z = 0; z < 20; z++)
    printf("%s\n",seznam[z].slovo);
    return 0;
}

Nahlásit jako SPAM
IP: 82.142.80.–
zlz
~ Anonymní uživatel
634 příspěvků
30. 12. 2012   #2
-
0
-

   

int main()
{
     FILE *fr;
     fr = fopen("text.txt","r");

     if(!fr)
          puts("soubor nenalezen");
          /*
           * a nic vic?
           */

     typedef struct slova {
       int pocet;
       char slovo[50];
     } slova;

     int counter = 0;
     int pocet_slov = 0;
     char c;
     while((c = fgetc(fr)) != EOF){
          counter ++;
          if(c == ' ' || c == '\n')
               pocet_slov ++;
     }; // strednik na co?

     rewind (fr);

     /*
      * to je na co?
      */
     char *obsah;
     obsah = (char *) malloc(counter + 1);
     printf("hnuj\n"); // rozhodne ;)
     int f = 0;
     char q;
     while((q = fgetc(fr)) != EOF){
          obsah[f] = q;
          f++;
     }; // strednik na co?

     slova seznam[30];

     int p = 0;

     /*
      * to je na co?
      */
     int znak = 0;

     /*
      * to je na co?
      */
     seznam[p].slovo[0] = '\0';

     char pole[20];

     /*
      * to je na co?
      */
     pole[0] = '\0';

     /*
      * jsi na konci souboru
      */
     while((fscanf(fr,"%s" , pole)) != EOF){

          /*
           * proc -1?
           */
          for(int w = -1; w < p; w++)
               if(strcmp(seznam[w].slovo,pole) == 0){
                    seznam[w].pocet++;

                    /*
                     * return ukoncuje funkci
                     */
                    return 0;}

               /*
                * proc je tohle v cyklu?
                */
               else{
                    strcpy(seznam[p].slovo,pole);

                    /*
                     * jakou hodnotu zvysujes?
                     */
                    seznam[p].pocet++;
               }

          p++;

          /*
           * to jsi nikde nealokoval
           */
          free(pole);
     }; // strednik na co?

     /*
      * proc 20?
      */
     for(int z = 0; z < 20; z++)
          printf("%s\n",seznam[z].slovo);
     return 0;
}
Nahlásit jako SPAM
IP: 80.188.216.–
LFS0
Newbie
30. 12. 2012   #3
-
0
-

ty středníky k ničemu . potřebuju prostě porovnávat slova v textu a když se tam bude opakovat tak u něho zvýšit počet o 1

#include <stdio.h>

#include <stdlib.h>

int main()
{
     FILE *fr;
     fr = fopen("text.txt","r");

     if(!fr)
          puts("soubor nenalezen");

     typedef struct slova {
       int pocet ;
       char slovo[50];
     } slova;

     int counter = 0;
     int pocet_slov = 0;
     char c;
     while((c = fgetc(fr)) != EOF){
          counter ++;
          if(c == ' ' || c == '\n')
               pocet_slov ++;
     }

     rewind (fr);

     char *obsah;
     obsah = (char *) malloc(counter + 1);

     int f = 0;
     char q;
     while((q = fgetc(fr)) != EOF){
          obsah[f] = q;
          f++;
     }

     slova seznam[30];

     int p = 0;

    char pole[20];


           rewind (fr);
     while((fscanf(fr,"%s" , pole)) != EOF){


          for(int w = 0; w < p; w++){
               if(strcmp(seznam[w].slovo,pole) == 0){
                    seznam[w].pocet++;

                    ;}

               /*
                * proc je tohle v cyklu?      ............. nevím jak to načíst a porovnat celé 
                */
               else{
                    strcpy(seznam[p].slovo,pole);

                    /*
                     * jakou hodnotu zvysujes? ............... chtěl bych zvýšit počet opakovaní u slova
                     */
                    seznam[p].pocet++;
               }
          }
          p++;


     }

     /*
      * proc 20? ........... jenom na zkoušku
      */
     for(int z = 0; z < 20; z++)
          printf("%s %d\n",seznam[z].slovo,seznam[z].pocet);
     return 0;
}

Nahlásit jako SPAM
IP: 82.142.80.–
LFS0
Newbie
30. 12. 2012   #4
-
0
-

Tak už jsem to nějak pořešil ale pořád mi to načítá slova duplicitně do struktury . neví nekdo co stým ?

Nahlásit jako SPAM
IP: 82.142.80.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý