Calcoli scientifici con Julia/Bonus italiani
Aspetto
E' possibile scrivere il codice Julia per calcolare a quali bonus si ha diritto in base all'ISEE, al numero di figli ecc., per mostrare l'importo di ogni bonus e il totale complessivo. I bonus che si considerano sono:
- Assegno Unico
- Bonus nido
- Bonus bollette
- Bonus affitto
- Bonus ristrutturazione
- Ecobonus
- Bonus mobili
- Bonus cultura
# ================================
# STRUTTURA DATI UTENTE
# ================================
struct Famiglia
isee::Float64
num_figli::Int
figli_minori::Int
figli_18::Int
affitto::Float64
spesa_casa::Float64
spesa_green::Float64
spesa_mobili::Float64
ha_nido::Bool
end
# ================================
# BONUS
# ================================
# Assegno Unico (per figlio)
function assegno_unico(f::Famiglia)
max_bonus = 190
min_bonus = 50
soglia_max = 15000
soglia_min = 40000
function bonus_figlio(isee)
if isee <= soglia_max
return max_bonus
elseif isee >= soglia_min
return min_bonus
else
return max_bonus - (max_bonus - min_bonus) *
(isee - soglia_max) / (soglia_min - soglia_max)
end
end
return bonus_figlio(f.isee) * f.num_figli * 12
end
# Bonus nido
function bonus_nido(f::Famiglia)
if !f.ha_nido
return 0
end
if f.isee < 25000
return 3000
elseif f.isee < 40000
return 2500
else
return 1500
end
end
# Bonus bollette
function bonus_bollette(f::Famiglia)
if f.isee < 9530
return 200
elseif f.isee < 20000
return 100
else
return 0
end
end
# Bonus affitto
function bonus_affitto(f::Famiglia)
if f.affitto == 0
return 0
end
percentuale = f.isee < 15000 ? 0.4 : 0.2
return f.affitto * percentuale
end
# Bonus ristrutturazione (quota annua)
function bonus_ristrutturazione(f::Famiglia)
max_spesa = min(f.spesa_casa, 96000)
return (max_spesa * 0.5) / 10
end
# Ecobonus
function ecobonus(f::Famiglia)
return f.spesa_green * 0.65
end
# Bonus mobili
function bonus_mobili(f::Famiglia)
max_spesa = min(f.spesa_mobili, 8000)
return max_spesa * 0.5
end
# Bonus cultura
function bonus_cultura(f::Famiglia)
return f.figli_18 * 500
end
# ================================
# CALCOLO COMPLESSIVO
# ================================
function calcola_bonus(f::Famiglia)
risultati = Dict{String, Float64}()
risultati["Assegno Unico"] = assegno_unico(f)
risultati["Bonus nido"] = bonus_nido(f)
risultati["Bonus bollette"] = bonus_bollette(f)
risultati["Bonus affitto"] = bonus_affitto(f)
risultati["Bonus ristrutturazione"] = bonus_ristrutturazione(f)
risultati["Ecobonus"] = ecobonus(f)
risultati["Bonus mobili"] = bonus_mobili(f)
risultati["Bonus cultura"] = bonus_cultura(f)
totale = sum(values(risultati))
return risultati, totale
end
# ================================
# ESEMPIO DI UTILIZZO
# ================================
famiglia = Famiglia(
18000, # ISEE
2, # numero figli
1, # figli minori
1, # figli di 18 anni
6000, # affitto annuo
50000, # spesa ristrutturazione
10000, # spesa green
5000, # mobili
true # usa asilo nido
)
risultati, totale = calcola_bonus(famiglia)
println("=== DETTAGLIO BONUS ===")
for (k, v) in risultati
println(rpad(k, 25), ": €", round(v, digits=2))
end
println("\nTOTALE COMPLESSIVO: €", round(totale, digits=2))
=== DETTAGLIO BONUS === Bonus ristrutturazione : €2500.0 Ecobonus : €6500.0 Bonus cultura : €500.0 Bonus mobili : €2500.0 Bonus affitto : €1200.0 Assegno Unico : €4156.8 Bonus bollette : €100.0 Bonus nido : €3000.0
TOTALE COMPLESSIVO: €20456.8