Track
/
Elixir
Elixir
/
Esercizi
/
Tariffe da freelance
Tariffe da freelance

Tariffe da freelance

Esercizio di apprendimento

Introduzione

Numeri interi

In Elixir esistono due tipi diversi di numeri: i numeri interi e i numeri in virgola mobile.

I numeri interi sono numeri senza parte decimale.

integer = 3
# => 3

Numeri in virgola mobile

I numeri in virgola mobile hanno una o più cifre dopo il separatore decimale. Usano il formato a virgola mobile a doppia precisione a 64 bit.

float = 3.45
# => 3.45

Lavorare con i numeri

Nei moduli Integer e Float puoi trovare alcune funzioni utili per lavorare con questi tipi. Gli operatori aritmetici di base sono definiti nel modulo Kernel.

Conversione

I numeri interi ed i numeri in virgola mobile possono essere combinati in un'unica espressione aritmetica. Usare un numero in virgola mobile in un'espressione garantisce che anche il risultato sarà un numero in virgola mobile.

2 * 3
# => 6

2 * 3.0
# => 6.0

Tuttavia, quando si esegue una divisione, il risultato è sempre un numero in virgola mobile, anche se si usano solo numeri interi.

6 / 2
# => 3.0

Per convertire un numero in virgola mobile in un numero intero, puoi scartare la parte decimale con trunc/1.

Istruzioni

In questo esercizio scriverai codice per aiutare un freelance a comunicare con un project manager. Il tuo compito è fornire alcune utilità per calcolare rapidamente le tariffe giornaliere e mensili, eventualmente con uno sconto specificato.

Stabiliamo prima alcune regole tra il freelance e il project manager:

  • La tariffa giornaliera è 8 volte la tariffa oraria.
  • Un mese ha 22 giorni fatturabili.

A volte il freelance propone di applicare uno sconto sulla propria tariffa giornaliera (per esempio per i clienti più fedeli o per i clienti senza scopo di lucro).

Gli sconti sono modellati come numeri frazionari che rappresentano percentuali, per esempio 25.0 (25%).

1. Calcola la tariffa giornaliera data una tariffa oraria

Implementa una funzione chiamata daily_rate per calcolare la tariffa giornaliera data una tariffa oraria come parametro. Il contratto stabilisce che un giorno ha 8 ore fatturabili.

FreelancerRates.daily_rate(60)
# => 480.0

La tariffa giornaliera restituita deve essere un numero in virgola mobile.

2. Calcola un prezzo scontato

Implementa una funzione apply_discount per calcolare il prezzo dopo uno sconto.

FreelancerRates.apply_discount(150, 10)
# => 135.0

Il valore restituito deve essere sempre un numero in virgola mobile, senza alcun arrotondamento.

3. Calcola la tariffa mensile, data una tariffa oraria e uno sconto

Implementa una funzione monthly_rate per calcolare la tariffa mensile scontata. Prende due parametri: una tariffa oraria e lo sconto in percentuale.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

La tariffa mensile restituita deve essere arrotondata per eccesso (prendi il ceiling) all'intero più vicino.

4. Calcola il numero di giornate lavorative complete dati un budget, una tariffa oraria e uno sconto

Implementa una funzione days_in_budget che prende in ingresso un budget, una tariffa oraria e uno sconto, e calcola a quante giornate di lavoro complete corrispondono.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

Il numero di giornate restituito deve essere arrotondato per difetto (prendi il floor) a una cifra decimale.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Tariffe da freelance?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.