iColas7 Inviato 6 Ottobre 2014 Segnala Condividi Inviato 6 Ottobre 2014 Buonasera a tutti. Ho provato a realizzare un programma che mi calcoli lo stipendio netto partendo da quello lordo. Il mio problema (ho iniziato oggi a guardare if ed else) è che la seconda e la terza condizione (else if e else) mi danno dei problemi, a volte si sovrappongono non calcolandomi correttamente il dato. Qualcuno può aiutarmi?? Grazie mille /* Scrivere un programma C che, dato il valore dello stipendio lordo, calcoli lo stipendio netto mensile considerando una tassazione pari al 20% per stipendi lordi compresi fra 10.001 euro e 30.000 euro, pari al 30% oltre ai 30.000 euro ed esentasse per gli stipendi lordi inferiori a 10.000 euro. Inserire nel codice il controllo sull’input dell’utente. */ #include <stdio.h> #include <stdlib.h> int main () { float stipendio_lordo, stipendio_netto1, stipendio_netto2; /* Inserisco le variabili, in float perchè difficilmente uno stipendio avrà valore intero */ printf("Inserire il proprio stipendio lordo annuale: "); /* Stampo a video la richiesta affinchè l'utente inserisca il proprio stipendio lordo */ scanf("%f", &stipendio_lordo); /* Inizio a scrivere le condizioni richieste dal problema */ if (0 < stipendio_lordo <= 10000) printf("Il tuo stipendio netto mensile è: %f \n", stipendio_lordo / 12); else if (10001 <= stipendio_lordo <= 30000) { stipendio_netto1 = stipendio_lordo - (stipendio_lordo - 10000) * 0.2; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto1 / 12); } else { stipendio_netto2 = stipendio_lordo - (stipendio_lordo - 10000) * 0.3; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto2 / 12); } return 0; }  MacBook Pro Retina 15"  iPod Classic 80GB  iPhone 4s 16GB  The New iPad 32GB  Apple Cube G4  AppleTV2g  Link al commento Condividi su altri siti Altre opzioni di condivisione...
Andry95 Inviato 6 Ottobre 2014 Segnala Condividi Inviato 6 Ottobre 2014 prova cosi: #include <stdio.h> #include <stdlib.h> int main () { float stipendio_lordo, stipendio_netto1, stipendio_netto2; /* Inserisco le variabili, in float perchè difficilmente uno stipendio avrà valore intero */ printf("Inserire il proprio stipendio lordo annuale: "); /* Stampo a video la richiesta affinchè l'utente inserisca il proprio stipendio lordo */ scanf("%f", &stipendio_lordo); /* Inizio a scrivere le condizioni richieste dal problema */ if (0 < stipendio_lordo <= 10000) { printf("Il tuo stipendio netto mensile è: %f \n", stipendio_lordo / 12); } else { if (10001 <= stipendio_lordo <= 30000) { stipendio_netto1 = stipendio_lordo - (stipendio_lordo - 10000) * 0.2; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto1 / 12); } else { stipendio_netto2 = stipendio_lordo - (stipendio_lordo - 10000) * 0.3; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto2 / 12); } } return 0; }  iPhone 6  iPad Air 2  MacBook Pro Retina 15 " Early 2013  Apple watch  Link al commento Condividi su altri siti Altre opzioni di condivisione...
iColas7 Inviato 6 Ottobre 2014 Autore Segnala Condividi Inviato 6 Ottobre 2014 prova cosi: #include <stdio.h> #include <stdlib.h> int main () { float stipendio_lordo, stipendio_netto1, stipendio_netto2; /* Inserisco le variabili, in float perchè difficilmente uno stipendio avrà valore intero */ printf("Inserire il proprio stipendio lordo annuale: "); /* Stampo a video la richiesta affinchè l'utente inserisca il proprio stipendio lordo */ scanf("%f", &stipendio_lordo); /* Inizio a scrivere le condizioni richieste dal problema */ if (0 < stipendio_lordo <= 10000) { printf("Il tuo stipendio netto mensile è: %f \n", stipendio_lordo / 12); } else { if (10001 <= stipendio_lordo <= 30000) { stipendio_netto1 = stipendio_lordo - (stipendio_lordo - 10000) * 0.2; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto1 / 12); } else { stipendio_netto2 = stipendio_lordo - (stipendio_lordo - 10000) * 0.3; printf("Il tuo stipendio netto mensile è: %f \n", stipendio_netto2 / 12); } } return 0; } Niente da fare, purtroppo mi dà ancora il problema precedente. esempio: lo stipendio lordo è 20.000. Dovrebbe venire 1500 invece viene 1666,66  MacBook Pro Retina 15"  iPod Classic 80GB  iPhone 4s 16GB  The New iPad 32GB  Apple Cube G4  AppleTV2g  Link al commento Condividi su altri siti Altre opzioni di condivisione...
rudyvic Inviato 7 Ottobre 2014 Segnala Condividi Inviato 7 Ottobre 2014 È da un po' che non faccio C, ma non serve una fflush dopo la scanf? iMac 27" ------ Macbook Air 13" ------ iPhone 3GS Black 16GB ------ iPhone 5 Black 32GB ------ 2 iPod Shuffle 1GB Link al commento Condividi su altri siti Altre opzioni di condivisione...
iColas7 Inviato 7 Ottobre 2014 Autore Segnala Condividi Inviato 7 Ottobre 2014 È da un po' che non faccio C, ma non serve una fflush dopo la scanf? In alcuni casi non mi era servita, oggi provo poi ti faccio sapere  MacBook Pro Retina 15"  iPod Classic 80GB  iPhone 4s 16GB  The New iPad 32GB  Apple Cube G4  AppleTV2g  Link al commento Condividi su altri siti Altre opzioni di condivisione...
maCrobo Inviato 7 Ottobre 2014 Segnala Condividi Inviato 7 Ottobre 2014 Hai sbagliato a definire la condizione nei condizionali. Devi dire una condizione alla volta, cioè se stipendio_lordo è maggiore di 0 E se è minore di 10000, allora fai questo. In questo modo definisci l'intervallo da 0 a 10000 (e tutti gli altri intervalli). L'operatore logico "E", o meglio, AND in C, C++ e Objective C è &&. Se poi ti interessa l'OR è || . Ciao. Il Mac è come un televisore, quando ti serve lo accendi, lo usi, te lo godi e, quando ti sei stancato, lo spegni. Un PC Windows è come se ti fossi preso il cane: gli devi togliere le pulci, lavarlo, pettinarlo e, per ricompensa, se per una volta ti dimentichi di portarlo in bagno, te la farà in casa. [cit.] Link al commento Condividi su altri siti Altre opzioni di condivisione...
iColas7 Inviato 7 Ottobre 2014 Autore Segnala Condividi Inviato 7 Ottobre 2014 Hai sbagliato a definire la condizione nei condizionali. Devi dire una condizione alla volta, cioè se stipendio_lordo è maggiore di 0 E se è minore di 10000, allora fai questo. In questo modo definisci l'intervallo da 0 a 10000 (e tutti gli altri intervalli). L'operatore logico "E", o meglio, AND in C, C++ e Objective C è &&. Se poi ti interessa l'OR è || . Ciao. Perfetto grazie mille!! Nel corso della giornata avevo anche provato con || ma non funzionava, invece con && va alla grande! Ancora grazie  MacBook Pro Retina 15"  iPod Classic 80GB  iPhone 4s 16GB  The New iPad 32GB  Apple Cube G4  AppleTV2g  Link al commento Condividi su altri siti Altre opzioni di condivisione...
Lief Inviato 7 Ottobre 2014 Segnala Condividi Inviato 7 Ottobre 2014 vedo che ti hanno aiutato alla velocità della luce. anch'io la prima cosa strana che ho notato è il non utilizzo dell' && Link al commento Condividi su altri siti Altre opzioni di condivisione...
s1501 Inviato 8 Ottobre 2014 Segnala Condividi Inviato 8 Ottobre 2014 Volendo puoi usare anche else if anziché if annidati: if(stipendio_lordo > 0 && stipendio_lordo <= 10000) { //Stipendio compreso tra 1 e 10000 } else if(stipendio_lordo > 10000 && stipendio_lordo <= 30000) { //Stipendio compreso tra 10001 e 30000 } else { //Stipendio maggiore di 30000 } Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.