Questo esercizio affronta la scrittura di un algoritmo con l’uso di condizioni, e la relativa codifica in C++.
Testo del problema:
Un utente vuole acquistare un abbonamento per il trasporto della sua città, lo schema tariffario è funzione della durata (annuale, mensile, settimanale), e della zona (1,2,3) secondo lo schema riprotato nella tabella:
Libro sulla programmazione in C++
Schema Tariffario
Zona | Settimanale | Mensile | Annuale |
1 | € 10,00 | € 18,00 | € 150,00 |
2 | € 5,00 | € 32,00 | € 185,00 |
3 | € 13,00 | € 40,00 | € 230,00 |
Inoltre l’utente avrà un ulteriore sconto se sceglie una tariffa a bassa priorità che produrrà uno sconto del 20% sul totale dovuto.
Calcolare la tariffa dovuta.
Risoluzione
Per risolvere il problema sono definite delle variabili di tipo carattere che codificano il tipo di abbonamento (s per settimanale, m per mensile, a per annuale) e se si ha diritto alla riduzione (s/n), e la relativa zona che è codificata con un numero intero (1,2,3).
La tabella dati è:
Tabella Dati:
Nome | Uso | Tipo | Descrizione |
Input | Tipo | Intero | Zona di abbonamento 1,2,3 |
Input | Durata | Carattere | Durata abbonamento s→ Settimanale m → Mensile a → Annuale |
Input | Riduzione | Carattere | s → Riduzione per bassa priorità n → Nessuna Riduzione |
Output | Tariffa | Reale | Tariffa dovuta |
Il diagramma di flusso è:
La codifica in C++ e:
#include <iostream>
using namespace std;
int main()
{
char durata;
char riduzione;
int tipo;
float tariffa;
cout << "\n Schema tariffario\n";
cout << "Durata: Settimanale\n";
cout << "Tipo 1:10\tTipo 2:5\tTipo 3:13\n";
cout << "Durata: Mensile:\n";
cout << "Tipo 1:18\tTipo 2:32\tTipo 3:40\n";
cout << "Durata: Annuale:\n";
cout << "Tipo 2:150\tTipo 2:185\tTipo 3:230\n";
cout << "Durata s/m/a ?";
cin >> durata;
cout << "Tipo 1,2,3 ?\n";
cin >> tipo;
cout << "Riduzione: s/n ?";
cin >> riduzione;
if (durata=='s'){
if (tipo==1)
tariffa=10;
if (tipo==2)
tariffa=5;
if (tipo==3)
tariffa=13;}
if (durata=='m'){
if (tipo==1)
tariffa=18;
if (tipo==2)
tariffa==32;
if (tipo==3)
tariffa=32;}
if (durata=='a'){
if (tipo==1)
tariffa=150;
if (tipo==2)
tariffa=185;
if (tipo==3)
tariffa=230;}
if (riduzione=='s')
tariffa=tariffa-0.2*tariffa;
cout << "\n Il Costo dell'abbonamento è:\t"<< tariffa<<endl;
return 0;
}