|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2012
Messaggi: 15
|
[C] Numero occorrenze delle lettere
Salve a tutti mi sono bloccato su un problema....
Ecco il testo: Sviluppare una function che, dati come parametri di input una stringa che rappresenta un testo in italiano, determina e restituisce come parametro di output l'array (di size 21) del numero delle occorrenze delle 21 lettere dell'alfabeto italiano. ecco la function gia sviluppata: Codice:
void conta_lettere(char a[], Alfabeto b[])
{
int i,j,n;
n=strlen(a);
for(i=0;i<n;i++)
{
for(j=0;j<21;j++)
{
if(a[i]==b[j].lettera)
b[j].quantita++;
}
}
}
//Alfabeto è una struct con campi {char lettera; int quantita}// Come la dichiaro la struct? Non capisco come iniziare...grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Credo tu debba lavorare di codifica ascii x poter risalire al numero della lettera ed incrementare così l'indice dell array corrispondente..
Un idea in c++ la trovi qui: http://ideone.com/r9xh11 Inviato con il mio Xperia P
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go Ultima modifica di The_ouroboros : 09-07-2013 alle 17:40. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jan 2013
Messaggi: 38
|
La struct la dichiarerei così
Codice:
struct _alpha{
char lettera;
int quantita;
};
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
la struttura le definisci come
Codice:
typedef struct
{
char lettera;
int quantita;
} Alfabeto;
__________________
In God we trust; all others bring data Ultima modifica di sottovento : 11-07-2013 alle 09:28. Motivo: Ops, abbiamo scritto allo stesso tempo. Pardon! |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Dec 2012
Messaggi: 15
|
ok quindi questa è la dichiarazione della struct
typedef struct { char lettera[21]; int quantita; } Alfabeto; e questa invece la dichiarazione dei campi Alfabeto conta[21]={ {'a',0}, {'b',0}, ............. {'z',0}}; giusto? |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2013
Messaggi: 38
|
Non è un vettore di caratteri, ma un carattere soltanto, altrimenti sono un po' troppi.
Ogni record della "tabella" contiene 2 campi: uno con la lettera, uno con la quantità di questa lettera. Codice:
typedef struct {
char lettera;
int quantita;
} Alfabeto;
Se vuoi, puoi inizializzarlo più velocemente con un ciclo for, sfruttando i codici decimali dei caratteri ASCII. Codice:
char lettera;
int i;
for(lettera = 'a', i = 0; i < 21; lettera++, i++){
if(lettera == 'j' || lettera == 'k', || lettera == 'w' || lettera == 'x' || lettera == 'y') i--;
else conta[i].lettera = lettera;
}
for(i = 0; i < 21; conta[i].quantita = 0, i++);
Ultima modifica di Spe! : 11-07-2013 alle 20:07. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:18.



















