/*
ESERCIZIO:
Specifiche funzionali:
La seguente tabella, riassume le condizioni economiche applicate da un’agenzia per
l’emissione di un biglietto ferroviario,
Classe 0-100 Km 100-500 Km Oltre 500 Km
1° € 2,5 Km € 2 Km € 1,5 Km
2° € 2 Km € 1,5 Km € 1 Km
Merce € 2 Km € 3 Km € 4 Km
Richieste:
Implementare un programma che consenta di
• Acquisire la stazione di partenza e quella di destinazione
• Acquisire la classe, la distanza e il numero di :
o componenti nel caso di persone o di colli nel caso di merci
• Emettere il biglietto indicando l’importo complessivo da pagare.
Opzionale:
Calcolare una riduzione del costo del biglietto, pari a :
• 35% se l’utente ha un’età compresa tra i 6 e 10 anni (estremi inclusi)
• 10% se il numero di colli è superiore a 2
Utilizzare:
• un menù di scelta per differenziare Persone-Merci;
• una opzione per l’EXIT dal programma;
• nomi di variabili esplicative della funzione svolta;
• istruzioni di selezione e iterazione idonee a sostenere la struttura e la leggibilità del
programma;
*/
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
// variabili
int direzione; // usata
int distanza; // usata
int categoria; // usata
int quantita; // usata
int classe; // usata
double costo; // usata
int eta;
// costanti
double const PREZZO_0_100_PRIMA = 2.50;
int const PREZZO_100_500_PRIMA = 2;
double const PREZZO_OLTRE_500_PRIMA = 1.5;
int const PREZZO_0_100_SECONDA = 2;
double const PREZZO_100_500_SECONDA = 1.5;
int const PREZZO_OLTRE_500_SECONDA = 1;
int const PREZZO_0_100_MERCI = 2;
int const PREZZO_100_500_MERCI = 3;
int const PREZZO_OLTRE_500_MERCI = 4;
int main (void)
{
cout<<"Tratte disponibili:"<<endl;
cout<<"\t1) Udine - Gorizia"<<endl;
cout<<"\t2) Udine - Pordenone"<<endl;
cout<<"\t3) Udine - Trieste"<<endl;
cout<<"\t4) Udine - Venezia"<<endl;
cout<<"\t5) Udine - Milano"<<endl;
cout<<"\t6) Udine - Roma"<<endl;
cout<<"\t7) Udine - Napoli"<<endl;
cout<<"\t8) Udine - Monaco"<<endl;
cout<<"\t9) Udine - La Spezia"<<endl;
cout<<"\t10) Udine - Firenze \n"<<endl;
cout<<"inserire il numero della tratta che si vuole intraprendere: \n";
cin>>direzione;
switch (direzione)
{
case 1:
distanza=39;
break;
case 2:
distanza=65;
break;
case 3:
distanza=100;
break;
case 4:
distanza=154;
break;
case 5:
distanza=334;
break;
case 6:
distanza=429;
break;
case 7:
distanza=850;
break;
case 8:
distanza=670;
break;
case 9:
distanza=430;
break;
case 10:
distanza=365;
break;
}
cout<<"\nindicare in che classe si vuole viaggiare:"<<endl;
cout<<"\t1) Prima classe"<<endl;
cout<<"\t2) Seconda classe"<<endl;
cout<<"\t3) Solo traporto merci \n";
cin>>classe;
if (classe == 3){
cout << "\ninserire il numero di colli che si desidera"
<< "trasportare:\n";
}
else{
cout << "\ninserire la proria età:\n";
cin >> eta;
cout << "\ninserire il numero di viaggiatori:\n";
}
cin >> quantita;
if (classe == 1) {
if (distanza < 100) {
costo = PREZZO_0_100_PRIMA * distanza * quantita;
}
else if (distanza > 100 && distanza < 500){
costo = PREZZO_100_500_PRIMA * distanza * quantita;
}
else if (distanza > 500) {
costo = PREZZO_OLTRE_500_PRIMA * distanza * quantita;
}
}
else if (classe == 2){
if (distanza < 100) {
costo = PREZZO_0_100_SECONDA * distanza * quantita;
}
else if (distanza > 100 && distanza < 500){
costo = PREZZO_100_500_SECONDA * distanza * quantita;
}
else if (distanza > 500){
costo = PREZZO_OLTRE_500_SECONDA * distanza * quantita;
}
}
else if (classe == 3){
if (distanza < 100) {
costo = PREZZO_0_100_MERCI * distanza * quantita;
}
else if (distanza > 100 && distanza < 500){
costo = PREZZO_100_500_MERCI * distanza * quantita;
}
else if (distanza > 500){
costo = PREZZO_OLTRE_500_MERCI * distanza * quantita;
}
}
// condizione opzionale del problema con gli sconti applicati
if (eta >= 6 || eta <= 10 ) {
costo = costo -((costo / 100) * 35);
}
if (classe == 3 && quantita > 2) {
costo = costo - ((costo / 100) * 10);
}
cout << "\nil costo del biglietto è:\n"
<< costo << "€";
return 0;
}
ecco qua il tuo esercizio alcune precisazioni:
- il programma l'ho scritto alle 02.25 della mattina cioè adesso che lo posto
di conseguenza potrebbero esserci dei lievi errori di attenzione... controllalo.
io comunque l'ho testato con la calcolatrice e mi sembra funzioni.
- se lavori su windows devi inserire l'enunciato "system("PAUSE");" prima dell'enunciato
return 0;