15/10/10 11:52
xeeynamo
Ciao a tutti!
Stò lavorando su un algoritmo che mi dice qual'è la lettera più utilizzata in un file di testo. Per esempio se scrivo "mio zio rocco" il programma mi deve dire che la lettera più utilizzata è la 'o'. Ho già pensato come fare, creo un array di unsigned int lungo 0x100 e ogni volta che legge una lettera, incrementa di uno una determinata posizione dell'array (detto molto più semplicemente, l'array all'inizio è settato interamente a 0 e poi ogni lettera letta ci sarà array[*testo++]++; ). Dopo aver letto l'intera frase, farò un altro ciclo che memorizzerà il numero di lettere più utilizzato (qui ci sarà if(array[i] > max) max = i; ) e infine ci sarà l'ultimo ciclo che mi dirà qual'è la lettera più utilizzata (if (array[i] == max) return i; ). Si lo so, l'algoritmo va bene ma a parer mio è troppo macchinoso e lento in runtime, dato che il vero algoritmo che userò non funzionerà su semplici frasi ma su file binari abbastanza lunghi. 3 cicli soltanto per vedere qual'è la lettera più utilizzata è assurdo, solo che non ho trovato altri modi per semplificare l'algoritmo ed è per questo che chiedo qui .
Aspetto risposte
Stò lavorando su un algoritmo che mi dice qual'è la lettera più utilizzata in un file di testo. Per esempio se scrivo "mio zio rocco" il programma mi deve dire che la lettera più utilizzata è la 'o'. Ho già pensato come fare, creo un array di unsigned int lungo 0x100 e ogni volta che legge una lettera, incrementa di uno una determinata posizione dell'array (detto molto più semplicemente, l'array all'inizio è settato interamente a 0 e poi ogni lettera letta ci sarà array[*testo++]++; ). Dopo aver letto l'intera frase, farò un altro ciclo che memorizzerà il numero di lettere più utilizzato (qui ci sarà if(array[i] > max) max = i; ) e infine ci sarà l'ultimo ciclo che mi dirà qual'è la lettera più utilizzata (if (array[i] == max) return i; ). Si lo so, l'algoritmo va bene ma a parer mio è troppo macchinoso e lento in runtime, dato che il vero algoritmo che userò non funzionerà su semplici frasi ma su file binari abbastanza lunghi. 3 cicli soltanto per vedere qual'è la lettera più utilizzata è assurdo, solo che non ho trovato altri modi per semplificare l'algoritmo ed è per questo che chiedo qui .
Aspetto risposte
Ultima modifica effettuata da xeeynamo 15/10/10 11:57
aaa