View Full Version : [C]contare occorrenze in un vettore di caratteri
ciao a tutti,
mi servirebbe una mano...
io vorrei contare quante volte un carattece compare in un vettore(di caratteri) e buttare tutto dentro una struct...mi spiego meglio...
io ho il vettore aabcaab
vorrei creare un vettore di struct(anche statico sovradimensionato) cosi
a
4
---
b
2
---
c
1
spero di sia abbastanza comprensibile...grazie a tutti!!
ciao ciao:D
banryu79
14-12-2010, 12:56
Beh, contare le occorrenze di ogni carattere è banale: semplicemente iteri tutto il vettore, e ogni volta che incontri un dato carattere incrementi un contatore.
Dato che i caratteri nella tabella ascii sono associati a dei valori decimali, per il "contatore" potresti allocare un array di 256 elementi di tipo int, e ogni volta che leggi un certo carattere usi il carattere stesso come indice per accedere all'elemento da incrementare.
Al termine della lettura del vettore, il tuo array conterrà per ogni carattere il numero di occorrenze incontrate.
l'idea del vettore di 256 elementi mi piace...
però (per esempio) come faccio a sapere che a è uguale al (sempre per esemprio) 43 ASCII?
e viceversa ovviamente quando devo fare un eventuale stampa di debug?
grazie per l'idea
banryu79
14-12-2010, 13:43
Tu hai il tuo bel vettore di char.
Ti crei un array di tipo int di 256 elementi.
Leggi un carattere (tipo char) dal vettore e (dato che il valore del char che hai letto dal vettore è un int) lo usi direttamente come valore per accedere ad un elemento del tuo array, che incrementerai di uno.
Se hai un char e vuoi stampare il suo valore decimale con le funzioni tipo printf basta che lo casti esplicitamente a int, se non ricordo male.
Link tabella ascii. (http://www.cdrummond.qc.ca/cegep/informat/Professeurs/Alain/images/ASCII1.GIF)
quindi se faccio cosi
for (i=0;i<20;i++)
{
v[(int)carat[i]]++;
}
(forse anche senza cast)
mi crea il mio vettore delle occorrenze e credo di esserci però avrei ancora un paio di domande se non ti spiace :stordita: :
1-la mia stampa non è pulita ai soli valori che ho nel vettore ma c'è una serie di altri simboli mai visti con 2 o 3 occorrenze...sarà perchè il vett di caratteri è sovradim?
2-se ora voglio fare un riepilogo e scrivere "bene ci sono n A n B ecc" come faccio?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.