Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Modifica programma in C

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Modifica programma in C

Postdi Luca_pro » 26/11/09 14:49

Ciao io ho qst programma che vorrei modificare:
Codice: Seleziona tutto
#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
Luca_pro
Newbie
 
Post: 1
Iscritto il: 26/11/09 14:48

Sponsor
 

Torna a Programmazione


Topic correlati a "Modifica programma in C":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti