Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Modifica prog i c

  1. #1

    Modifica prog i c

    Ciao io ho qst programma che vorrei modificare:

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

    //Questo programma memorizza un file in memoria dinamica, ma non memorizza la stessa parola due volte
    #define MAX_PAROLE 400000
    typedef struct {
    char *parola;
    int num;
    }parole;

    void ordina(parole *a[], int n);
    void attendi ();

    int main(int argc, char* argv[])
    {
    char frase[100];
    parole *libro[MAX_PAROLE];
    int i=0, dimensione_totale=0;
    int j;
    char trovato;
    clock_t t1,t2;
    float tm;

    FILE * pf;

    pf=fopen(argv[1],"r");

    if (pf==NULL) {
    printf("Impossibile aprire il file\n");
    return 1;
    }

    for (i=0;i<MAX_PAROLE;i++) libro[i]=NULL;

    i=0;

    do {
    fscanf (pf,"%s",frase);
    if (feof(pf)) break;


    for (j=0,trovato=0;libro[j];j++)
    if (strcmp(libro[j]->parola,frase)==0){
    trovato=1;
    libro[j]->num+=1;
    break;
    }



    if (!trovato) {
    libro[i]=malloc(sizeof(parole));
    libro[i]->parola=malloc(strlen(frase)+1);
    dimensione_totale+=strlen(frase)+1;

    strcpy (libro[i]->parola,frase);
    libro[i]->num=1;
    //printf ("%s %d\n",frase,i);

    i++;

    if (i == MAX_PAROLE-1) {
    printf ("Troppe parole. devo fermarmi qui\n");
    attendi();
    break;
    }
    }
    }while (1);


    printf ("\n\nAdesso ristampo il libro\n\n");
    attendi();

    for (j=0;libro[j];j++)
    printf ("%4d %-25s presente %d volte\n",j,libro[j]->parola,libro[j]->num);
    attendi();
    printf ("Adesso metto tutto in ordine\n");
    t1=clock();
    ordina (libro, i);
    t2=clock();
    tm=((float)(t2-t1))/(CLOCKS_PER_SEC);
    printf("\ntempo di ordinamento: %f s\n",tm);

    printf ("\n\nAdesso ristampo il libro\n\n");
    attendi();

    for (i=0;libro[i];i++)
    printf ("%4d %-25s presente %d volte\n",i,libro[i]->parola,libro[i]->num);

    return 0;
    }





    Però vorrei modificarlo in modo che mi stampi solo le 20 parole più usate e scrivere accanto quante volte sono presenti nel testo solo x qll 20 parole e in base a qnt volte compare far stampare a lato un determinato numero di cancelletti per esempio cosi:

    ciao (2) ####
    buongiorno (3) #####
    salve (4) ######


    come potrei modificare qll programma?
    grazie ciao

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    per regolamento il codice va postato tra i tag code..

  3. #3
    scusa ho sbagliato!!!

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.