Alex_G
30-05-2013, 11:39
Ciao a tutti, sto provando a scrivere questo programma per calcolare la paga di diversi dipendenti utilizzando il comando switch; eseguendo il programma nonostante io immetta un carattere incluso nei casi dello switch, si verifica l'azione di default... :cry: cosa è sbagliato secondo voi ? Grazie in anticipo :)
int codice, paga_fissa=500, stipendio_ora=6, stipendio_ora_straordinario=9, paga_lavoratori_privvigione = 250, stipendio_fisso_articolo=5, articoli_prodotti;
float stipendio_dipendente, ore_lavorative, ore_bonus, paga_straordinari, vendite_lorde, bonus_dipendente_a_prov;
printf("Inserire la lettera corrispondente al dipendente del quale si vuole calcolare lo stipendio, seguendo la seguente tabella:\na: manager\nb: lavoratori a ore\nc:lavoratori a provvigione\nd:lavoratori a cottimo\nEOF: per terminare il programma;\n");
scanf("%d", &codice);
while (( codice = getchar() ) != EOF) {
switch ( codice ) {
case 'a':
stipendio_dipendente = paga_fissa;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
case 'b':
printf("Inserire il numero di ore di lavoro effettuate:\n");
scanf("%f", &ore_lavorative);
if ( ore_lavorative<=40) {
stipendio_dipendente = ore_lavorative*stipendio_ora;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
}
else {
ore_bonus = ore_lavorative -40;
paga_straordinari = ore_bonus*stipendio_ora_straordinario;
stipendio_dipendente = 40*stipendio_ora + paga_straordinari;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
}
break;
case 'c':
printf("Inserire l'ammmontare in euro delle vendite lorde del dipendente:\n");
scanf("%f", &vendite_lorde);
bonus_dipendente_a_prov = (vendite_lorde/100)*5.7;
stipendio_dipendente = bonus_dipendente_a_prov + paga_lavoratori_privvigione;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
case 'd':
printf("Inserire il numero di articoli prodotti:\n");
scanf("%d", &articoli_prodotti);
stipendio_dipendente = articoli_prodotti*stipendio_fisso_articolo;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
default:
printf("E' stato inserito un numero di identificazione non corretto. Inserire nuovamente il numero per identificare il dipendente");
break; :doh:
}
}
return 0;
int codice, paga_fissa=500, stipendio_ora=6, stipendio_ora_straordinario=9, paga_lavoratori_privvigione = 250, stipendio_fisso_articolo=5, articoli_prodotti;
float stipendio_dipendente, ore_lavorative, ore_bonus, paga_straordinari, vendite_lorde, bonus_dipendente_a_prov;
printf("Inserire la lettera corrispondente al dipendente del quale si vuole calcolare lo stipendio, seguendo la seguente tabella:\na: manager\nb: lavoratori a ore\nc:lavoratori a provvigione\nd:lavoratori a cottimo\nEOF: per terminare il programma;\n");
scanf("%d", &codice);
while (( codice = getchar() ) != EOF) {
switch ( codice ) {
case 'a':
stipendio_dipendente = paga_fissa;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
case 'b':
printf("Inserire il numero di ore di lavoro effettuate:\n");
scanf("%f", &ore_lavorative);
if ( ore_lavorative<=40) {
stipendio_dipendente = ore_lavorative*stipendio_ora;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
}
else {
ore_bonus = ore_lavorative -40;
paga_straordinari = ore_bonus*stipendio_ora_straordinario;
stipendio_dipendente = 40*stipendio_ora + paga_straordinari;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
}
break;
case 'c':
printf("Inserire l'ammmontare in euro delle vendite lorde del dipendente:\n");
scanf("%f", &vendite_lorde);
bonus_dipendente_a_prov = (vendite_lorde/100)*5.7;
stipendio_dipendente = bonus_dipendente_a_prov + paga_lavoratori_privvigione;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
case 'd':
printf("Inserire il numero di articoli prodotti:\n");
scanf("%d", &articoli_prodotti);
stipendio_dipendente = articoli_prodotti*stipendio_fisso_articolo;
printf("Lo stipendio ammonta ad una cifra di %.2f euro\n", stipendio_dipendente);
break;
default:
printf("E' stato inserito un numero di identificazione non corretto. Inserire nuovamente il numero per identificare il dipendente");
break; :doh:
}
}
return 0;