Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [c] calcolo della frequenza

    Ciao a tutti,ho un problema sto risolvendo un esercizio che mi calcola la frequenza di caratteri presenti in un testo
    codice:
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    
    int main()
    
    {
        long totale, i, temp;
        unsigned char c;
        float frequenze[256];
        FILE*fp1;
        
        
        
            fp1=fopen("capitolo1.txt", "r");
            if (fp1==NULL)
            {
             printf("Non ho trovato il file.\n");             
            }
            
            for (i=0; i<256; i++)
            {
            frequenze[i]=0;
            }
               totale =0;
            
            while(fscanf(fp1, "%c", &c)==1)
            {
                              if ((c < 0)||(c > 256))
                              {
                                                 printf("il carattere %c non e' fra 0-255!\n", c);
                                                 getchar();
                                                 exit(-1);
                              }
                              temp=(int)c;
                              frequenze[temp]=frequenze[temp]+1;
                              totale =totale +1;
            }
            for (i=1; i<256; i++)
            {
                
                frequenze[i]=frequenze[i]*100/totale;
                printf("n=%ld,\t%c,freq= %f\n",frequenze[temp], c, frequenze[i]);
            }
    fflush(stdin);
    getchar();
    exit(0);
    }
    chi mi sa dire per favore dove sbaglio?sto diventando scemo...
    sicuramente sarà una semplice cagata,ma nn riesco a trovarlo..

    grazie

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Il codice è giusto. è sbagliata la printf. I valori sono in percentuale.
    prova questo..
    codice:
    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    #include <iostream.h>
    
    int main()
    
    {
        long totale, i, temp;
        unsigned char c;
        float frequenze[256];
        FILE*fp1;
        
        
        
            fp1=fopen("capitolo1.txt", "r");
            if (fp1==NULL)
            {
             printf("Non ho trovato il file.\n");             
            }
            
            for (i=0; i<256; i++)
            {
            frequenze[i]=0;
            }
               totale =0;
            
            while(fscanf(fp1, "%c", &c)==1)
            {
                              if ((c < 0)||(c > 256))
                              {
                                                 printf("il carattere %c non e' fra 0-255!\n", c);
                                                 getchar();
                                                 exit(-1);
                              }
                              temp=(int)c;
                              frequenze[temp]=frequenze[temp]+1;
                              totale =totale +1;
            }
            cout << "totale " << totale << endl;
            for (i=1; i<256; i++)
            {
                
                frequenze[i]=(frequenze[i]*100)/totale;
                //printf("n= ", i, " frequenza di " , char(i), " = ", frequenze[i], " %");
                cout << " n= " << i << " char = " << char(i) << " freq = " << frequenze[i] << endl;
            }
    fflush(stdin);
    getchar();
    exit(0);
    }
    I got the remedy

  3. #3
    nn funziona!!!ma come funziona il comando
    codice:
     cout << "totale " << totale << endl;
    e il comando
    codice:
     cout << " n= " << i << " char = " << char(i) << " freq = " << frequenze[i] << endl;

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    purtroppo non conosco la sintassi del printf.
    cout è un oggetto dentro il file header iostream.h, si tratta di linguaggio C++.
    Hai inserito
    #include <iostream.h>
    che compilatore usi ?
    I got the remedy

  5. #5
    uso il dev c++

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da ivan1984z
    uso il dev c++
    e come fa a non compilarti
    fai copia incolla del codice che ho inserito io.
    I got the remedy

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma il sorgente che usi ha estensione .C o .CPP ?

  8. #8
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da oregon
    Ma il sorgente che usi ha estensione .C o .CPP ?
    non cambia niente con devc++
    I got the remedy

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ... ma qual e' il problema esatto?

    Un errore di compilazione ? Se e' cosi', quale ?

    Un errore logico del programma ? Non ottieni i valori che credi ? Quali ?

  10. #10
    Questo è uno dei commenti che mi scrive il compilatore:

    codice:
    4 C:\Dev-Cpp\include\c++\backward\iostream.h:31,   from C:\Documents... In file included from C:/Dev-Cpp/include/c++/backward/iostream.h:31,  from C:\Documents....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.