Calcolo del costo di un biglietto ferroviario

di il
7 risposte

Calcolo del costo di un biglietto ferroviario

Potete aiutarmi a fare questo piccolo esercizio, ho provato tante volte a farlo ma non riesco .
Grazie mille per l'aiuto =D

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;

Implementare tutti i controlli nel caso in cui l’utente tentasse di mettere in crisi il programma

7 Risposte

  • Re: Calcolo del costo di un biglietto ferroviario

    Ciao, puoi postare un po' di codice dei tuoi tentativi?
  • Re: Calcolo del costo di un biglietto ferroviario

    In cosa dovrebbe consistere questo aiuto? Correggiamo il tuo codice? Ci spieghi cosa hai scritto, cosa volevi fare e quali errori hai avuto ...?
  • Re: Calcolo del costo di un biglietto ferroviario

    Ecco qua: mi sono fermato qua e non riesco a continuarlo
    /* Calcolo del costo di un biglietto ferroviario */
    /* Librerie */
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <math.h>

    using namespace std;

    /* Variabili e Costanti */
    int direzione, distanza, categoria, quantita, prezzo, classe , costo;
    int main (void)
    {

    cout<<"Tratte disponibili: \n"<<endl;
    cout<<"1)Udine - Gorizia"<<endl;
    cout<<"2)Udine - Pordenone"<<endl;
    cout<<"3)Udine - Trieste"<<endl;
    cout<<"4)Udine - Venezia"<<endl;
    cout<<"5)Udine - Milano"<<endl;
    cout<<"6)Udine - Roma"<<endl;
    cout<<"7)Udine - Napoli"<<endl;
    cout<<"8)Udine - Monaco"<<endl;
    cout<<"9)Udine - La Spezia"<<endl;
    cout<<"10)Udine - Firenze \n"<<endl;
    cout<<"Scriva il numero della tratta che vuole intraprendere: \n"<<endl;
    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<<"\nIndica in che classe vuole viaggiare:"<<endl;
    cout<<"1)Prima classe"<<endl;
    cout<<"2)Seconda classe"<<endl;
    cout<<"3)Solo traporto merci \n"<<endl;
    cin>>categoria;



    {



    }
  • Re: Calcolo del costo di un biglietto ferroviario

    
    /*
     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;
  • Re: Calcolo del costo di un biglietto ferroviario

    Nosba ha scritto:


    se lavori su windows devi inserire l'enunciato "system("PAUSE");" prima dell'enunciato
    return 0;
    Questo non è necessario, anzi, è anche poco corretto ... basta una

    getchar();
  • Re: Calcolo del costo di un biglietto ferroviario

    oregon ha scritto:


    Nosba ha scritto:


    se lavori su windows devi inserire l'enunciato "system("PAUSE");" prima dell'enunciato
    return 0;
    Questo non è necessario, anzi, è anche poco corretto ... basta una

    getchar();
    grazie della precisazione io ho lavorato solo con mac e pochissimo con window quindi non sapevo che si potesse fare anche in questo modo...
  • Re: Calcolo del costo di un biglietto ferroviario

    Grazie Mille a tutti =D
Devi accedere o registrarti per scrivere nel forum
7 risposte