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