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ì
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;
}
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.
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