non riesco a capire cosa sia il "65" nel codice! :berto:
non riesco a capire cosa sia il "65" nel codice! :berto:
65 è il valore intero nella tabella ASCII della lettera A (maiuscola)
Normalizzare la stringa significa convertirla in lettere maiuscole.Originariamente inviato da marcusbasic
per i profani come me... cosa significa normalizzare la stringa?
Se la stringa contiene lettere minuscole, infatti, il codice non funzionerebbe.
In informatica le maiuscole sono diverse dalle minuscole. Mentre a te interessa solo contare le lettere.
"Sasso"
A = 1
O = 1
S = 3 (anche se il PC interpreterebbe come 1 maiuscola e 2 minuscole)
@zero85: il copia/incolla fa sempre danni... mi ero dimenticato di ridimensionare l'array
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Eh succede succede anche a me quasi sempreOriginariamente inviato da LeleFT
@zero85: il copia/incolla fa sempre danni... mi ero dimenticato di ridimensionare l'array
Ciao.![]()
![]()
La "normalizzazione" puo' essere fatta all'interno del ciclo e si puo' evitare la chiamata alla strlen
codice:i=0; while(s[i]) presenze[(s[i++] & 223)-65]++;
va bhè...l'avevo fatto in 1 minuto...pensandoci poco.
E poi, cos'è il 223?
Anch'io ...Originariamente inviato da devil89
va bhè...l'avevo fatto in 1 minuto...pensandoci poco.![]()
Beh, allora non era questione di avere poco tempo ...E poi, cos'è il 223?![]()
223 (esadecimale DF) e' la costante utilizzata per resettare il bit 5 del byte che contiene un codice ASCII di una lettera in modo da renderla maiuscola ...
Tu avrai sicuramente più esperienza di me. Che lavoro fai?Originariamente inviato da oregon
Anch'io ...![]()
Beh, allora non era questione di avere poco tempo ...![]()
Io sono uno studente; delle volte mi capitano delle distrazioni, e poi volevo dirlo....in merito al codice ascii e a queste normalizzazioni, non ne avevo mai sentito parlare.
Naturalmente, stavo scherzando ... ho capito che sei uno studente ...
Io una volta ero dall'altra parte della cattedra, ora non piu', ma sono nel settore ... forse da piu' anni di quanto ne hai tu ...
P.S. Con questo, festeggio i miei 6000 messaggi ...![]()
Io non sono un programmatore esperto.. ma mi sono appassionato al problema.Originariamente inviato da marcusbasic
Chiedo aiuto a voi programmatori esperti, ho un esercizio in C che non riesco proprio ad impostare.
Mi viene chiesto di fare un programma che conti il numero di lettere in una stringa... ovvero.....
se la stringa è "Ciao a tutti"... il programma stampa "C=1" "I=2" "A=2" "T=3" etc.
come posso cominciare?'? qualcuno ha programmi simili e mi può postare il sorgente?![]()
Ecco la mia soluzione:
codice:#include <stdio.h> typedef struct listaCaratteri { int volte; char lettera; struct listaCaratteri *suc; } Lc; void inserisci(Lc **ptr, char c) { Lc *nuovo; if (*ptr == NULL || (*ptr)->lettera >= c) { if (*ptr != NULL && (*ptr)->lettera == c) { (*ptr)->volte++; } else { nuovo = (Lc *)malloc(sizeof(Lc)); nuovo->volte = 1; nuovo->lettera = c; nuovo->suc = *ptr; *ptr = nuovo; } return; } else inserisci(&((*ptr)->suc), c); } void stampaLista(Lc *testa) { if (testa == NULL) return; else { printf("'%c' -> %d volte \n", testa->lettera, testa->volte); stampaLista(testa->suc); } } void cancellaLista(Lc **testa) { if (*testa == NULL) return; else { Lc *temp; temp = *testa; *testa = (*testa)->suc; free(temp); cancellaLista(&(*testa)); } } main() { Lc *testa=NULL; char *stringa = "Ciao a tutti quelli che leggerano questo messaggio"; while (*stringa != '\0') { inserisci(&testa, *stringa); stringa++; } stampaLista(testa); cancellaLista(&testa); }