PDA

View Full Version : [C] Conversione Stringhe


Coder87
24-10-2009, 17:42
Ciao a tutti devo implementare una funzione in C senza utilizzare le funzioni già presenti che mi permetta di restituirmi la seguente cosa:
data la stringa CiAo ComE vA
mi restituisce Ciao Come Va
come posso fare grazie...

euphyllia87
24-10-2009, 18:53
Ciao a tutti devo implementare una funzione in C senza utilizzare le funzioni già presenti che mi permetta di restituirmi la seguente cosa:
data la stringa CiAo ComE vA
mi restituisce Ciao Come Va
come posso fare grazie...

In poche parole ti pone tutti i caratteri in minuscolo salvo il carattere iniziale di ogni parola... con l'ucfirst() e lo strtolower() sarebbe una stupidata.

L'unica idea che mi viene in mente è creare un ciclo nel quale controllo OGNI singolo carattere in codifica ASCII... e imposto il carattere in base a come lo desidero tramite il codice ASCII...

a) ciclo la parola
b) analizzo la prima lettera, controllo il carattere ASCII e cerco il corrispettivo maiuscolo
c) su tutte le restanti cerco il corrispettivo minuscolo

So che i caratteri ASCII hanno una codifica (e ora onestamente non me la ricordo); fammi sapere che è interessante come problema.

cionci
24-10-2009, 19:39
All'inizio della ricerca setti un flag a 1.
Scorri tutta la stringa.
Se trovi uno spazio metti il flag a 1 e continui.
Se il flag è settato a 1 e trovi una lettera minuscola allora rendi la lettera maiuscola (la differenza fra una lettera maiuscole e la rispettiva maiuscola è costante), metti il flag a 0 e continui.
Se il flag è settato a 0 e trovi una lettera maiuscola allora rendi la lettera minuscola e continui.

euphyllia87
24-10-2009, 20:02
Ecco qui: volendo potresti provare ad usare la tabella ASCII.

http://www.cs.utk.edu/~pham/ascii_table.jpg

Come si nota dalla notazione decimale le lettere maiuscole iniziano da 65 e terminano a 90; le minuscole da 97 a 122 rispettivamente.

Potresti sfruttare questa tabella ASCII per ottenere ciò che vuoi ma non so se rientra come possibile opzione dell'esercizio.

cionci
24-10-2009, 21:37
Potresti sfruttare questa tabella ASCII per ottenere ciò che vuoi
Direi, mi sembra ovvio.

euphyllia87
24-10-2009, 21:46
Direi, mi sembra ovvio.

Non a tutti sembra ovvio... soprattutto chi chiede aiuto!

cionci
24-10-2009, 21:53
Non a tutti sembra ovvio... soprattutto chi chiede aiuto!
No, volevo dire che mi sembra ovvio che debba usare la tabella ASCII. In ogni caso molto probabilmente se gli hanno dato un esercizio di questo tipo gli hanno già spiegato cos'è la tabella ASCII. Infatti nel mio reply avevo parlato di:
(la differenza fra una lettera maiuscola e la rispettiva maiuscola è costante)
Tra l'altro per un esercizio del genere non serve conoscere la posizione nella tabella ASCII di nemmeno una lettera.

euphyllia87
24-10-2009, 22:04
No, volevo dire che mi sembra ovvio che debba usare la tabella ASCII. In ogni caso molto probabilmente se gli hanno dato un esercizio di questo tipo gli hanno già spiegato cos'è la tabella ASCII. Infatti nel mio reply avevo parlato di:

Tra l'altro per un esercizio del genere non serve conoscere la posizione nella tabella ASCII di nemmeno una lettera.

Anche questo è vero.
Io non do niente per scontato però! :D
Ho visto a corsi universitari insegnare prima l'assembly e poi la struttura di un calcolatore. Insegnare prima un linguaggio e poi l'algoritmica. :mbe:

Non do niente per scontato! :D