Inizio a capire qualcosina e chiedendo un po' anche ai tutori e al mio prof, ho provato a riprendere il programmino per il calcolo delle resistenze in base al colore che viene scritto nel programma.
Ho utilizzato il costrutto switch-case e ho notato che al case non si può mettere una stringa di caratteri, ma solo un carattere o un numero (cosa abbastanza ovvia ora che ci penso)
Compilando il programma, mi da degli warning per l'overflow sulle righe dove ho messo i colori. Ho un'idea di quale possa essere il problema.
Inizialmente il codice era così
poi l'ho corretto mettendoci i numeri nei case; anzichè il colore ho messo direttamente case 1, 2 ecc...Pensavo che nel case ci stesse cosa deve venir scritto sul programma, invece è solo un elenco.codice:#include <stdio.h> #include <ctype.h> #include <math.h> #include <stdlib.h> #include <string.h> #define COL 10 void colore(){ int colore[COL] = {0}; int c; int i; c = tolower(c); switch(c){ case 'nero': colore[0]++; break; case 'marrone': colore[1]++; break; case 'rosso': colore[2]++; break; case 'arancio': colore[3]++; break; case 'giallo': colore[4]++; break; case 'verde': colore[5]++; break; case 'blu': colore[6]++; break; case 'viola': colore[7]++; break; case 'grigio': colore[8]++; break; case 'bianco': colore[9]++; break; } char col[COL] = {'NERO', 'MARRONE', 'ROSSO', 'ARANCIO', 'GIALLO', 'VERDE', 'BLU', 'VIOLA', 'GRIGIO', 'BIANCO'}; for (i = 0; i < COL; i++){ printf("%c -> %d\n", col[i], colore[i]); } } int main(){ colore(); return 0; }
Mi resta il problema del char col[COL]. Mi da l'overflow perchè la lunghezza del vettore è di 10 e al compilatore non piace? Non capisco.
Avevamo fatto un programmino simile all'uni ma lì mi funzionava xD

Rispondi quotando
