Preventivo del noleggio
Un’agenzia di noleggio auto vuole che il sito mostri subito il preventivo a chi indica quanti giorni gli serve l’auto, quanti chilometri pensa di fare e quanti anni ha. Il listino ha tre voci, e il responsabile commerciale le cambia spesso, una alla volta: per questo vuole il codice diviso in una funzione per voce, da provare e correggere separatamente, più una funzione principale che le somma.
Le voci sono queste. Il noleggio costa 45 euro al giorno; da 7 giorni in su, 7 compreso, scatta la tariffa settimanale e tutti i giorni costano 38 euro. I chilometri: sono inclusi 200 km per ogni giorno di noleggio (tre giorni, 600 km inclusi), e ogni chilometro oltre quelli inclusi costa 0,25 euro. Il supplemento giovani: se il conducente ha meno di 25 anni si pagano 12 euro in più per ogni giorno; con 25 anni compiuti non si paga.
Scrivi tre funzioni piccole, costo_giorni(giorni), costo_km(km, giorni) e supplemento_giovane(eta, giorni), e la funzione principale preventivo(giorni, km, eta) che le chiama e restituisce la somma con due decimali. La verifica chiama solo preventivo(), ma provala anche voce per voce: ognuna delle tre funzioni deve ricevere come argomenti tutto quello che le serve, giorni compresi.
giorninumero — giorni di noleggio, almeno 1kmnumero — chilometri che il cliente prevede di percorrereetanumero — età del conducente in anni compiuti
totale numero — prezzo del noleggio in euro, 2 decimali
preventivoSoluzione
| caso | giorni | km | eta | atteso | ottenuto |
|---|
# ---- Le tre voci, una funzione ciascuna ----
costo_giorni <- function(giorni){
if(giorni >= 7){
tariffa <- 38 # tariffa settimanale, su tutti i giorni
}else{
tariffa <- 45
}
return(giorni * tariffa)
}
costo_km <- function(km, giorni){
inclusi <- 200 * giorni
if(km > inclusi){
return((km - inclusi) * 0.25)
}else{
return(0)
}
}
supplemento_giovane <- function(eta, giorni){
if(eta < 25){
return(12 * giorni)
}else{
return(0)
}
}
# ---- La funzione principale: mette insieme le tre voci ----
preventivo <- function(giorni, km, eta){
totale <- costo_giorni(giorni) + costo_km(km, giorni) + supplemento_giovane(eta, giorni)
return(round(totale, 2))
}
costo_giorni(7) # 266
costo_km(550, 2) # 37.5
supplemento_giovane(25, 4) # 0
preventivo(2, 550, 22) # 151.5