Si potrebbe fare in modo più sintetico???

di il
4 risposte

Si potrebbe fare in modo più sintetico???

CALCOLO DEL SALARIO

Sviluppate un programma per calcolare lo stipendio lordo di ciascuno dei diversi impiegati. L'azienda paga quanto previsto all'ora per "l'orario lavorativo normale" per le prime 40 ore di lavoro e paga "una volta e mezza" per tutte le ore di lavoro oltre le 40 ore. Vi viene data una lista degli impiegati dell'azienda, il numero di ore in cui l'impiegato ha lavorato l'ultima settimana e la paga oraria di ogni impiegato. Il vostro programma deve leggere queste informazioni per ogni impiegato e determinare e stampare lo stipendio lordo.

Ho svolto un pò diversamente questo esercizio come dice nell'intestazione di OUTPUT, cioè:

CALCOLO DEL SALARIO IN 6 DIFFERENTI PAESI DELLA COMUNITA' EUROPEA

ITALIA
DANIMARCA
IRLANDA
LUSSEMBURGO
NORVEGIA
SVIZZERA

Fonti: http://www.pmi.i
Stipendi lavoro dipendente
La retribuzione media oraria in Italia è sotto la media europea (UE a 17: 15,22 euro; UE a 27: 14,02 euro). Secondo il rapporto ISTAT, il dato lordo su base annua – per lavoratori dipendenti nelle imprese con almeno 10 addetti – è pari a 16,2 euro.
Fra le economie UE, la Penisola si colloca al 12esimo posto. Il confronto europeo è misurato attraverso dati armonizzati di ottobre 2010 (retribuzione oraria italiana di 14,48 euro). I più pagati sono risultati i dipendenti in Danimarca (27,09 euro) seguiti da Irlanda (22,23 euro) e Lussemburgo (21,95 euro). La paga più elevata è quella in Norvegia (27,37 euro e Svizzera (oltre 25 euro).


OUTPUT: http://prntscr.com/fbo7z

CODICE SORGENTE:
#include <stdio.h>
int main( void )
{
	  puts( "QUESTO E' UN PROGRAMMA PER IL CALCOLO DEL SALARIO IN 6 DIFFERENTI PAESI DELLA COMUNITA' EUROPEA\n" );
	  puts( "I paesi di riferimento sono:\nITALIA\nDANIMARCA\nIRLANDA\nLUSSEMBURGO\nNORVEGIA\nSVIZZERA\n" );
    
    float pagaPerOraItalia = 14.48;
    float pagaPerOraDanimarca = 27.09;
    float pagaPerOraIrlanda = 22.23;
    float pagaPerOraLussemburgo = 21.95;
    float pagaPerOraNorvegia = 27.37;
    float pagaPerOraSvizzera = 25;
    float straPagaPerOraItalia = pagaPerOraItalia + pagaPerOraItalia / 2;
    float straPagaPerOraDanimarca = pagaPerOraDanimarca + pagaPerOraDanimarca / 2;
    float straPagaPerOraIrlanda = pagaPerOraIrlanda + pagaPerOraIrlanda / 2;
    float straPagaPerOraLussemburgo = pagaPerOraLussemburgo + pagaPerOraLussemburgo / 2;
    float straPagaPerOraNorvegia = pagaPerOraNorvegia + pagaPerOraNorvegia / 2;
    float straPagaPerOraSvizzera = pagaPerOraSvizzera + pagaPerOraSvizzera / 2;
    int impiegato;
    float numOreSett;
    float totPagaOrariaItaliano;
    float totPagaOrariaDanese;
    float totPagaOrariaIrlandese;
    float totPagaOrariaLussemburghese;
    float totPagaOrariaNorvegese;
    float totPagaOrariaSvizzero;
    int numero = 1;
    int counterItalia = 0;
    int counterDanimarca = 0;
    int counterIrlanda = 0;
    int counterLussemburgo = 0;
    int counterNorvegia = 0;
    int counterSvizzera = 0;
    int totOre = 0;
    printf( "Inserire il numero di ore di lavoro nella %d^ settimana\n(-1 per terminare)\n", numero );
    scanf( "%f", &numOreSett );
    numero = numero + 1;
        while ( numOreSett != -1 ) {
            if ( numOreSett <= 40 ) {
    	        totPagaOrariaItaliano = pagaPerOraItalia * numOreSett;
                   totPagaOrariaDanese = pagaPerOraDanimarca * numOreSett;
                   totPagaOrariaIrlandese = pagaPerOraIrlanda * numOreSett;
                   totPagaOrariaLussemburghese = pagaPerOraLussemburgo * numOreSett;
                   totPagaOrariaNorvegese = pagaPerOraNorvegia * numOreSett;
            	totPagaOrariaSvizzero = pagaPerOraSvizzera * numOreSett;
            	counterItalia = counterItalia + totPagaOrariaItaliano;
            	counterDanimarca = counterDanimarca + totPagaOrariaDanese;
            	counterIrlanda = counterIrlanda + totPagaOrariaIrlandese;
            	counterLussemburgo = counterLussemburgo + totPagaOrariaLussemburghese;
            	counterNorvegia = counterNorvegia + totPagaOrariaNorvegese;
            	counterSvizzera = counterSvizzera + totPagaOrariaSvizzero;
            	puts( "" );
            	printf( "Si riportano i salari lordi che si sarebbero percepiti nei 6 paesi dell'U.E. aggiornati al 2010 per %.2f ore di lavoro\n\nITALIA\t\t%.3f euro\nDANIMARCA\t%.3f euro\nIRLANDA\t\t%.3f euro\nLUSSEMBURGO\t%.3f euro\nNORVEGIA\t%.3f euro\nSVIZZERA\t%.3f euro\n\n", numOreSett, totPagaOrariaItaliano, totPagaOrariaDanese, totPagaOrariaIrlandese, totPagaOrariaLussemburghese, totPagaOrariaNorvegese, totPagaOrariaSvizzero );
        }
        else {
            totPagaOrariaItaliano = pagaPerOraItalia * 40 + straPagaPerOraItalia * (numOreSett -40 );
            totPagaOrariaDanese = pagaPerOraDanimarca * 40 + straPagaPerOraDanimarca * (numOreSett -40 );
            totPagaOrariaIrlandese = pagaPerOraIrlanda * 40 + straPagaPerOraIrlanda * (numOreSett -40 );
            totPagaOrariaLussemburghese = pagaPerOraLussemburgo * 40 + straPagaPerOraLussemburgo * (numOreSett -40 );
            totPagaOrariaNorvegese = pagaPerOraNorvegia * 40+ straPagaPerOraNorvegia * (numOreSett -40 );
            totPagaOrariaSvizzero = pagaPerOraSvizzera * 40 + straPagaPerOraSvizzera * (numOreSett -40 );
            counterItalia = counterItalia + totPagaOrariaItaliano;
            counterDanimarca = counterDanimarca + totPagaOrariaDanese;
            counterIrlanda = counterIrlanda + totPagaOrariaIrlandese;
            counterLussemburgo = counterLussemburgo + totPagaOrariaLussemburghese;
            counterNorvegia = counterNorvegia + totPagaOrariaNorvegese;
            counterSvizzera = counterSvizzera + totPagaOrariaSvizzero;
            puts( "" );
            printf( "Si riportano i salari lordi che si sarebbero percepiti nei 6 paesi dell'U.E. aggiornati al 2010 per %.2f ore di lavoro\n\nITALIA\t\t%.3f euro\nDANIMARCA\t%.3f euro\nIRLANDA\t\t%.3f euro\nLUSSEMBURGO\t%.3f euro\nNORVEGIA\t%.3f euro\nSVIZZERA\t%.3f euro\n\n", numOreSett, totPagaOrariaItaliano, totPagaOrariaDanese, totPagaOrariaIrlandese, totPagaOrariaLussemburghese, totPagaOrariaNorvegese, totPagaOrariaSvizzero );
        }
        totOre = totOre + numOreSett;
        printf( "Inserire il numero di ore di lavoro nella %d^ settimana\n(-1 per terminare)\n", numero );
        scanf( "%f", &numOreSett );
        numero = numero + 1;
    }
    float totItalia = counterItalia;
    float totDanimarca = counterDanimarca;
    float totIrlanda = counterIrlanda;
    float totLussemburgo = counterLussemburgo;
    float totNorvegia = counterNorvegia;
    float totSvizzera = counterSvizzera;
    puts( "" );
    printf( "Il salario lordo totale per le %d ore di lavoro è:\n\nITALIA\t\t%.3f euro\nDANIMARCA\t%.3f euro\nIRLANDA\t\t%.3f euro\nLUSSEMBURGO\t%.3f euro\nNORVEGIA\t%.3f euro\nSVIZZERA\t%.3f euro\n", totOre, totItalia, totDanimarca, totIrlanda, totLussemburgo, totNorvegia, totSvizzera );
}
Grazie, ciao.

4 Risposte

  • Re: Si potrebbe fare in modo più sintetico???

    E il tuo problema sarebbe???...a parte il fatto di aver infranto il record della printf più lunga della storia?....
  • Re: Si potrebbe fare in modo più sintetico???

    Per esempio vorrei chiedere all'utente:
    A quale paese sei interessato???
    Lui mi risponde:
    ITALIA
    ed io gli do il resto delle informazioni...
    oppure
    LUSSEMBURGO ( che ha una paga oraria diversa )
    e gli do il resto dei dati???

    Vorrei cioè far scegliere all'utente il paese... Quali sono gli strumenti essenziali da conoscere per migliorare il programma come sopra scritto?
    E poi...qual'è il record della printf più lunga della storia???
    Scusate ma sono ancora alle prime armi con il linguaaggio C.

    Grazie ) Ciao!
  • Re: Si potrebbe fare in modo più sintetico???

    JackieJack1207 ha scritto:


    Per esempio vorrei chiedere all'utente:
    A quale paese sei interessato???
    Lui mi risponde:
    ITALIA
    ed io gli do il resto delle informazioni...
    oppure
    LUSSEMBURGO ( che ha una paga oraria diversa )
    e gli do il resto dei dati???

    Vorrei cioè far scegliere all'utente il paese... Quali sono gli strumenti essenziali da conoscere per migliorare il programma come sopra scritto?
    E poi...qual'è il record della printf più lunga della storia???
    Scusate ma sono ancora alle prime armi con il linguaaggio C.

    Grazie ) Ciao!

    Le due funzioni che cerchi sono:
    1) scanf utilizzando il format specifier %s per leggere una stringa inserita dall'utente
    2) strcmp per confrontare due stringhe.
  • Re: Si potrebbe fare in modo più sintetico???

    Ok, dovrei approfondire la funzione strcmp. Alla prossima ;-D
Devi accedere o registrarti per scrivere nel forum
4 risposte