|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2010
Messaggi: 42
|
[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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
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.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2010
Messaggi: 42
|
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 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
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.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2010
Messaggi: 42
|
quindi se faccio cosi
Codice:
for (i=0;i<20;i++)
{
v[(int)carat[i]]++;
}
mi crea il mio vettore delle occorrenze e credo di esserci però avrei ancora un paio di domande se non ti spiace :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? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:27.











:








