Messaggioda prime_number » 21/06/2006, 11:08

Ok tutto chiaro! Non sapevo questa cosa dell'ASCII!!

Se sorgono altri problemi scrivo sul forum, ma spero di doverti disturbare il meno possibile!! ;)

Grazie ancora, sei la mia salvezza!!

Paola
www.greedy-bear.com : il mio blog di cucina italiana e finlandese.
Avatar utente
prime_number
Cannot live without
Cannot live without
 
Messaggio: 419 di 6148
Iscritto il: 17/09/2004, 14:20
Località: Helsinki

Messaggioda eugenio.amitrano » 21/06/2006, 11:54

Disturba pure senza problemi.
E' un piacere per me.

A presto,
Eugenio

P.S.
Come hai potuto notare la conoscenza dei codici ascii aiuta a gestire i caratteri numericamente.
Su internet puoi trovare molto facilemnte una tabella di tutti i codici ascii.

Esempio di comodita':
immaginiamo una variabile (ch) di tipo carattere, che legge un carattere casuale dal file.
Per sapere se questa variabile contiene una lettera minuscola basta fare uno dei seguenti confronti:

codice ascii di 'a' = 97
codice ascii di 'z' = 122

if(ch >= 97 && ch <= 122)
{ ...e' una lettera minuscola...}

oppure piu' semplicemente

if(ch >= 'a' && ch <= 'z')
{ ...e' una lettera minuscola...}

se scrivo 'a' e 'z' al posto 97 e 122 non cambia nulla.

se vuoi verificare invece che si tratti di un numero scrivi:

if(ch >= 48 && ch <= 57)
{ ...e' un numero...}

oppure piu' semplicemente

if(ch >= '0' && ch <= '9')
{ ...e' un numero...}
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 303 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda anonymous_be1147 » 21/06/2006, 12:46

eugenio.amitrano ha scritto:
Codice:
         sudokuValue[c][r] = sudoku.value[c][r] - 48;



Codice:
        sudokuValue[c][r] = sudoku.value[c][r] - '0';


Più portabile. ;)
anonymous_be1147
Cannot live without
Cannot live without
 
Messaggio: 91 di 3226
Iscritto il: 02/03/2006, 20:20

Messaggioda eugenio.amitrano » 21/06/2006, 12:55

Bravo!
Funziona anche scrivendo '0' al posto di 48.

Eugenio
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 305 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda groucho » 27/06/2006, 22:45

Codice:
// scansione valore per valore
for(c = 0; c < nCol; c++)
   for(r = 0; r < nRow; r++)
      if(sudoku.value[c][r] == '-')
         sudokuValue[c][r] = 0;
      else
         sudokuValue[c][r] = sudoku.value[c][r] - 48;


lo farei diventare

Codice:
// scansione valore per valore
for(c = 0; c < nCol; c++)
   for(r = 0; r < nRow; r++)
      sudokuValue[c][r] = (sudoku.value[c][r] == '-') ? 0 : atoi(sudoku.value[c][r]);


int atoi ( const char * string ), si trova nella stdlib.h e converte una stringa in un intero... perchè non usarla? :-D
per il resto il codice di eugenio.amitrano mi sembra molto buono :wink:
Avatar utente
groucho
Starting Member
Starting Member
 
Messaggio: 1 di 16
Iscritto il: 27/06/2006, 22:17

Messaggioda eugenio.amitrano » 28/06/2006, 13:24

Ciao groucho, (questo personaggio mi e' molto simpatico)
benvenuto nel forum e complimenti per la preparazione informatica. Sono sicuro che la tua presenza dara' grande valore aggiunto al forum.

Volevo segnarti un'imprecisione:
atoi(sudoku.value[c][r]);
non funziona, perche' come hai scritto tu, vuole come parametro una stringa e non un carattere.
Per farla funzionare si potrebbe effettuare un trasferimento in una stringa di un carattere piu' il NIL.

A presto,
Eugenio
Avatar utente
eugenio.amitrano
Senior Member
Senior Member
 
Messaggio: 334 di 1375
Iscritto il: 15/02/2006, 16:16

Messaggioda groucho » 28/06/2006, 17:41

vedi la fretta a volte? :oops:
ahah... non ci avevo nemmeno pensato al fatto che fosse un carattere... :D
Avatar utente
groucho
Starting Member
Starting Member
 
Messaggio: 4 di 16
Iscritto il: 27/06/2006, 22:17

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite