Last active
December 16, 2016 15:59
-
-
Save paolorotolo/241fd984f3c6296db6c7d5915f82eeda to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
n = input('Quanti operai vuoi inserire?'); | |
% Non abbiamo trovato un modo in matlab per definire variabili globali | |
% nella documentazione c'è la keyword 'global' ma non funziona :/ | |
pezzi = caricaInputPezzi(n); | |
ore = caricaInputOre(n); | |
paga = caricaInputPaga(n); | |
% Allora. | |
% f ci serve per capire la scelta dell'utente | |
% finchè f è compreso tra 1 e 6, il programma va avanti (f disuguale da 0) | |
% se invece f è uguale a 0, il programma esce dal while e viene terminato | |
% all'inizio comunque ci serve avere un valore di f per fare eseguire il | |
% while la prima volta, quindi lo settiamo a -1 | |
f = -1; | |
while f ~= 0 | |
% \n serve per andare a capo | |
f = input('Scrivi [\n1 - costo medio\n 2 - pezzi in un mese\n 3 - stipendio mensile\n 4 - spese salari totali\n 5 - operaio più efficente\n 6 - ore necessarie medie per produrre un pezzo\n 0 - ESCI]'); | |
if f == 1 | |
disp(costoMedio(n, pezzi, ore, paga)); | |
else if f == 2 | |
disp(pezziMese(n, pezzi)); | |
else if f == 3 | |
% stipendioMensile ritorna un vettore con lo stipendio di ogni | |
% operario. In un linguaggio serio andrebbe fatto un for e | |
% stampare il valore per ogni operario. In matlab anche se | |
% stampi il vettore direttamente funziona lo stesso ¯\_(ツ)_/¯ | |
disp(stipendioMensile(n, ore, paga)); | |
else if f == 4 | |
disp(speseSalari(n, ore, paga)); | |
else if f == 5 | |
sprintf('L''operaio più efficiente è il numero %d', operaioEfficiente(n, pezzi)); | |
else if f == 6 | |
disp(oreMediePezzo(n, pezzi)); | |
end | |
end | |
end | |
end | |
end | |
end | |
end | |
function iPezzi = caricaInputPezzi(n) | |
% iCoso non è un riferimento ad Apple® | |
for i=1:n | |
cosaDaChiedere = sprintf('Inserisci pezzi operaio %d: ', i); | |
iPezzi(i) = input(cosaDaChiedere); | |
end | |
end | |
function iPaga = caricaInputPaga(n) | |
% iCoso non è un riferimento ad Apple® | |
for i=1:n | |
cosaDaChiedere = sprintf('Inserisci paga operaio %d: ', i); | |
iPaga(i) = input(cosaDaChiedere); | |
end | |
end | |
function iOre = caricaInputOre(n) | |
% iCoso non è un riferimento ad Apple® | |
for i=1:n | |
cosaDaChiedere = sprintf('Inserisci ore operaio %d: ', i); | |
iOre(i) = input(cosaDaChiedere); | |
end | |
end | |
function cm = costoMedio(n, pezzi, ore, paga) | |
% cm = costo medio | |
spesa = 0; | |
totale = 0; | |
for i=1:n | |
spesa = spesa + (paga(i) * ore(i)); | |
totale = totale + (pezzi(i)*6); | |
end | |
cm = spesa/totale; | |
end | |
function ptm = pezziMese(n, pezzi) | |
% ptm = pezzo totale mese | |
totpez = 0; | |
for i=1:n | |
totpez = totpez + pezzi(i); | |
end | |
ptm = totpez * 30; | |
end | |
function sm = stipendioMensile(n, ore, paga) | |
for i=1:n | |
% paga oraria * ore settimanali * 4 settimane (un mese) | |
rm(i)=paga(i)*ore(i)*4; | |
end | |
sm = rm; | |
end | |
function speseMensili = speseSalari(n, ore, paga) | |
% ovvero tutti gli stipendi mensili sommati | |
spese = 0; | |
% prendi il vettore completo con tutti gli operai dall'altra funzione | |
vettoreStipendioMensile = stipendioMensile(n, ore, paga); | |
for i=1:n | |
%somma tutti i salari degli operai | |
spese = spese + vettoreStipendioMensile(i); | |
end | |
speseMensili = spese; | |
end | |
function nOperaio = operaioEfficiente(n, pezzi) | |
% trova l'operario che ha prodotto il maggior numero di pezzi al giorno | |
nOperaio = 1; | |
max = 0; | |
for i=1:n | |
if max<pezzi(i) | |
max = pezzi(i); | |
nOperaio = i; | |
end | |
end | |
end | |
function om = oreMediePezzo(n, pezzi) | |
op = 0; | |
for i=1:n | |
% produzione media all'ora | |
op = op + pezzi(i)/24; | |
end | |
% produzione media all'ora divisa per numero operai | |
om = op/n; | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment