Sconto fedeltà
Una catena di negozi di abbigliamento lancia il nuovo programma fedeltà e ti chiede di scrivere il calcolo dello sconto alla cassa. La direzione marketing ti ha spiegato le regole a voce, in riunione, e questa è la tua trascrizione.
Lo sconto base dipende da quanto si spende: niente sconto sotto i 100 euro, il 5% da 100 euro in su, il 10% da 250 euro in su. Chi ha la tessera fedeltà ha un bonus che si somma in punti percentuali: la tessera silver aggiunge 2 punti, la gold 7, chi non ha tessera non aggiunge nulla. Lo sconto complessivo, base più bonus, non può in nessun caso superare il 15%: un cliente gold da 300 euro avrebbe 10 + 7 = 17, ma paga con il 15%.
Le casse dei negozi useranno il calcolo migliaia di volte al giorno, quindi va scritto come funzione: totale_scontato(totale_carrello, tessera) riceve la spesa e la tessera (“silver”, “gold” o “nessuna”), in quest’ordine, e con return() restituisce il prezzo finale arrotondato a due decimali. Prima di scrivere codice, scrivi tu la specifica completa, con i casi limite (100 euro esatti, 250 esatti, il tetto del 15%), e passala all’assistente in modalità aiutami a partire.
totale_carrellonumero — spesa in euro, prima dello scontotesseratesto — "nessuna", "silver" o "gold"
totale_scontato numero — importo da pagare, 2 decimali
totale_scontatoSoluzione
| caso | totale_carrello | tessera | atteso | ottenuto |
|---|
totale_scontato <- function(totale_carrello, tessera){
if(totale_carrello >= 250){
sconto <- 10
}else if(totale_carrello >= 100){
sconto <- 5
}else{
sconto <- 0
}
if(tessera == "silver"){
sconto <- sconto + 2
}else if(tessera == "gold"){
sconto <- sconto + 7
}
if(sconto > 15){
sconto <- 15
}
totale <- round(totale_carrello * (1 - sconto/100), 2)
return(totale)
}
print(totale_scontato(80, "nessuna"))