Skip to content

Instantly share code, notes, and snippets.

@paolorotolo
Last active December 16, 2016 15:59
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paolorotolo/241fd984f3c6296db6c7d5915f82eeda to your computer and use it in GitHub Desktop.
Save paolorotolo/241fd984f3c6296db6c7d5915f82eeda to your computer and use it in GitHub Desktop.
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