PDA

View Full Version : Programma conversione caratteri numeri [C]


Oo.Tania.oO
13-02-2012, 12:09
Ho creato una matrice simile a questa formata da lettere casuali dalla A alla F e numeri casuali da 0 a 9:
< A 5> <D 2> B 7>
< C 2> <E 9> <F 4>

devo convertire le lettere in dei numeri precisi (A=10; B=11; C=12.....) e creare una funzione che mi stampi solo le coppie lettera-numero la cui somma supera un valore D inserito da tastiera..
Ma non riesco a capire..Come faccio a attribuire i valori numerici ai caratteri??

*Windows 7

demos88
13-02-2012, 12:34
O fai uno switch a 26 case per ogni lettera dell'alfabeto (ipotizzando che siano possibili 26 lettere), oppure, se le lettere sono tutte maiuscole, allora puoi considerare il fatto che il codice ascii della 'A' è 65 (decimale), quello della 'B' è 66, ... a questo punto tratti il char come un valore intero e gli sottrai 55.
'A' (=65) - 55 = 10
'B' (=66) - 55 = 11
e via dicendo...

tecno789
13-02-2012, 12:47
switch-case è il metodo più semplice

GByTe87
13-02-2012, 18:24
switch-case è il metodo più semplice

Perchè scrivere un centinaio di righe di codice (incredibilmente ripetitivo, quindi potenzialmente ricco di errori) quando te la puoi cavare con due?

Una volta che hai la corrispondenda completa char -> int giochi con gli ascii e via.

tecno789
13-02-2012, 19:17
Perchè scrivere un centinaio di righe di codice (incredibilmente ripetitivo, quindi potenzialmente ricco di errori) quando te la puoi cavare con due?

Una volta che hai la corrispondenda completa char -> int giochi con gli ascii e via.

Si hai proprio ragione, l'ho provato e sinceramente è venuto fuori subito, bel giochetto.

demos88
13-02-2012, 19:24
Si hai proprio ragione, l'ho provato e sinceramente è venuto fuori subito, bel giochetto.
appunto :asd:
il char è un tipo di dato primitivo della dimensione di un byte che è comodo da usare come carattere ascii 8bit da cui prende il nome. Però di fatto in C lo puoi trattare come un unsigned byte forzando la scrittura del codice.
Spesso si usa un puntatore *char anche per leggere stream o aree di memoria un byte alla volta, e nessuno impone che tu debba leggere per forza caratteri, possono anche essere dati raw.

tecno789
14-02-2012, 22:30
appunto :asd:
il char è un tipo di dato primitivo della dimensione di un byte che è comodo da usare come carattere ascii 8bit da cui prende il nome. Però di fatto in C lo puoi trattare come un unsigned byte forzando la scrittura del codice.
Spesso si usa un puntatore *char anche per leggere stream o aree di memoria un byte alla volta, e nessuno impone che tu debba leggere per forza caratteri, possono anche essere dati raw.

verissimo. Con lo switch-case si riempivano inutilmente solo righe di codice :D

KmKmKm
23-12-2021, 08:57
Ciao, perfavore qualcuno potrebbe farmi vedere come funzionerebbe lo switch case per convertire le lettere??