Ciao, è il mio primo post, quindi approfitto dell'occasione per salutare tutti gli utenti del forum!
Riguardo al tuo compito, puoi realizzare il programma più o meno così:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#define VERO 1
#define FALSO 0
#define RESA_PITTURA 0.25
int
main(int argc, char *argv[]) {
char colore;
int numero_riga;
int riga_valida;
float lunghezza, altezza;
float area, area_parziale, costo_totale, costo_medio;
float costo_colore, costo_nero, costo_bianco, costo_verde, costo_giallo;
numero_riga = 0;
area = 0;
costo_totale = costo_medio = 0;
if (argc < 5) {
printf(\"usare: %s costoNero costoBianco costoVerde costoGiallo\\n\", argv[0]);
return 1;
}
costo_nero = strtof(argv[1], (char**)NULL);
costo_bianco = strtof(argv[2], (char**)NULL);
costo_verde = strtof(argv[3], (char**)NULL);
costo_giallo = strtof(argv[4], (char**)NULL);
while (!feof(stdin)) {
++numero_riga;
riga_valida = VERO;
scanf(\"%c%f%f\\n\", &colore, &lunghezza, &altezza);
if (lunghezza < 0 || altezza < 0) {
riga_valida = FALSO;
}
/*costo_colore = 0;*/
switch (toupper(colore)) {
case 'N':
costo_colore = costo_nero;
break;
case 'B':
costo_colore = costo_bianco;
break;
case 'V':
costo_colore = costo_verde;
break;
case 'G':
costo_colore = costo_giallo;
break;
default:
riga_valida = FALSO;
}
if (riga_valida) {
area_parziale = lunghezza * altezza / (100 * 100);
area += area_parziale;
costo_totale += costo_colore * area_parziale * RESA_PITTURA;
} else
fprintf(stderr, \"Riga n. %d non valida - scartata\\n\", numero_riga);
}
printf(\"Area totale = %.2f mq\\n\", area);
printf(\"Costo totale della pittura: %.2f Euro\\n\", costo_totale);
printf(\"Costo medio della pittura: %.2f Euro/mq\\n\", costo_totale / area);
return 0;
}