namespace aeroporto_livello2; class Program { //costanti delle partenze e destinazioni const string partenza1="Milano"; const string partenza2="Bangkok"; const string partenza3="Berlino"; const string destinazione1="Milano"; const string destinazione2="Bangkok"; const string destinazione3="Berlino"; static void Main(string[] args){ //dichiarazione e inizializzazione variabili const int sconto1=10; const int sconto2=5; int prezzoAndata1, totale, prezzoRitorno1, exit, soloAndata1, soloAndata2, prezzoAndata2, prezzoRitorno2; //---queste variabili hanno dei valori che vengono rigettati dagli switch in modo da non avere una scelta di default valida--- exit=0; totale=-1; soloAndata1=1; soloAndata2=1; //---------------------------------------------------------------------------------------------------------------------------------------- //---queste variabili hanno valori che permettono di saltare il calcolo dei prezzi del secondo biglietto se l'utente ha scelto di uscire prima di selezionare il secondo biglietto--- prezzoRitorno1=2; prezzoAndata2=2; prezzoRitorno2=2; //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- string scelta; //Acquisto del primo biglietto prezzoAndata1=AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta=Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno1=AcquistoBiglietti(); soloAndata1=0; //Il biglietto non è di sola andata exit=1; break; case "s": prezzoRitorno1=AcquistoBiglietti(); soloAndata1=0; exit=1; break; case "Y": prezzoRitorno1=AcquistoBiglietti(); soloAndata1=0; exit=1; break; case "y": prezzoRitorno1=AcquistoBiglietti(); soloAndata1=0; exit=1; break; case "": prezzoRitorno1=AcquistoBiglietti(); soloAndata1=0; exit=1; break; case "N": totale=prezzoAndata1; soloAndata1=1; //Il biglietto è di sola andata exit=1; break; case "n": totale=prezzoAndata1; soloAndata1=1; exit=1; break; default: Console.WriteLine("Scelta non valida"); break; } } while(exit==0); //Acquisto del secondo biglietto Console.Write("Acquistare un secondo biglietto? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": //stesse operazioni che ho usato per l'acquisto del primo biglietto, ma in uno switch per venire selezionate dall'utente prezzoAndata2 = AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "s": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "Y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "N": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; case "n": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); break; case "s": //stesse operazioni che ho usato per l'acquisto del primo biglietto, ma in uno switch per venire selezionate dall'utente prezzoAndata2 = AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "s": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "Y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "N": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; case "n": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); break; case "Y": //stesse operazioni che ho usato per l'acquisto del primo biglietto, ma in uno switch per venire selezionate dall'utente prezzoAndata2 = AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "s": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "Y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "N": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; case "n": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); break; case "y": //stesse operazioni che ho usato per l'acquisto del primo biglietto, ma in uno switch per venire selezionate dall'utente prezzoAndata2 = AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "s": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "Y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "N": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; case "n": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); break; case "": //stesse operazioni che ho usato per l'acquisto del primo biglietto, ma in uno switch per venire selezionate dall'utente prezzoAndata2 = AcquistoBiglietti(); Console.Write("Acquistare anche il ritorno? [S/n] "); scelta = Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "s": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "Y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "y": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "": prezzoRitorno2 = AcquistoBiglietti(); soloAndata2 = 0; exit = 1; break; case "N": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; case "n": totale=prezzoAndata2; soloAndata2 = 1; exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); break; case "N": //Condizione per seguire la prima traccia se si sta acquistando un solo biglietto if (soloAndata1 == 0){ totale = (prezzoAndata1 - (prezzoAndata1 * sconto1 / 100)) + (prezzoRitorno1 - (prezzoRitorno1 * sconto1 / 100)); } else{ totale = prezzoAndata1; } exit = 1; break; case "n": //Condizione per seguire la prima traccia se si sta acquistando un solo biglietto if (soloAndata1 == 0){ totale = (prezzoAndata1 - (prezzoAndata1 * sconto1 / 100)) + (prezzoRitorno1 - (prezzoRitorno1 * sconto1 / 100)); } else{ totale = prezzoAndata1; } exit = 1; break; default: Console.WriteLine("Scelta non valida"); break; } } while (exit == 0); //Condizione per seguire la seconda traccia se si sta acquistando anche un secondo biglietto if (soloAndata2 != -1){ switch ((soloAndata1, soloAndata2)){ case (0, 0): totale = prezzoAndata1 + prezzoRitorno1 - ((prezzoAndata1 + prezzoRitorno1) * sconto1 / 100) + prezzoAndata2 + prezzoRitorno2 - ((prezzoAndata2 + prezzoRitorno2) * sconto1 / 100); break; case (0, 1): totale = (prezzoAndata2 - (prezzoAndata2 * sconto1 / 100)) + (prezzoAndata1 - (prezzoAndata1 * sconto1 / 100)) + (prezzoRitorno1 - (prezzoRitorno1 * sconto2 / 100)); break; case (1, 0): totale = (prezzoAndata1 - (prezzoAndata1 * sconto1 / 100)) + (prezzoAndata2 - (prezzoAndata2 * sconto1 / 100)) + (prezzoRitorno2 - (prezzoRitorno2 * sconto2 / 100)); break; case (1, 1): totale = (prezzoAndata1 - (prezzoAndata1 * sconto2 / 100)) + (prezzoAndata2 - (prezzoAndata2 * sconto2 / 100)); break; } } Console.WriteLine("Totale: " +totale); } static int AcquistoBiglietti(){ //dichiarazione e inizializzazione variabili string partenza, destinazione; int prezzo; //---questa variabile ha un valore non valido in modo da non avere una scelta di default valida--- prezzo=-1; partenza=SceltaPartenza(); destinazione=SceltaDestinazione(); prezzo=PrezzoVolo(partenza, destinazione); return prezzo; } static string SceltaPartenza() { //dichiarazione e inizializzazione variabili string partenza; partenza=null; int scelta, exit; //---questa variabile ha un valore iniziale non valido per permettere al programma di essere compilato (il default non la modifica)--- exit=-1; //selezione partenza do{ Console.WriteLine("Da dove si parte?"); Console.WriteLine("1. " +partenza1); Console.WriteLine("2. " +partenza2); Console.WriteLine("3. " +partenza3); Console.Write("Scelta: "); scelta=Convert.ToInt32(Console.ReadLine()); switch(scelta){ case 1: partenza=partenza1; exit=1; break; case 2: partenza=partenza2; exit=1; break ; case 3: partenza=partenza3; exit=1; break; default: Console.WriteLine("Scelta non valida"); break; } } while(exit!=1); return partenza; } static string SceltaDestinazione() { //dichiarazione e inizializzazione variabili string destinazione; destinazione=null; int scelta, exit; //---questa variabile ha un valore iniziale non valido per permettere al programma di essere compilato (il default non la modifica)--- exit=-1; //selezione destinazione do{ Console.WriteLine("Dove si vuole andare?"); Console.WriteLine("1. " +destinazione1); Console.WriteLine("2. " +destinazione2); Console.WriteLine("3. " +destinazione3); Console.Write("Scelta: "); scelta=Convert.ToInt32(Console.ReadLine()); switch(scelta){ case 1: destinazione=destinazione1; exit=1; break; case 2: destinazione=destinazione2; exit=1; break ; case 3: destinazione=destinazione3; exit=1; break; default: Console.WriteLine("Scelta non valida"); break; } } while(exit!=1); return destinazione; } static int PrezzoVolo(string partenza, string destinazione){ //dichiarazione e inizializzazione variabili per tabella della verità int prezzo; const int tariffa1=0; const int tariffa2=100; const int tariffa3=150; const int tariffa4=120; const int tariffa5=0; const int tariffa6=110; const int tariffa7=130; const int tariffa8=180; const int tariffa9=0; //---questa variabile ha un valore iniziale non valido per permettere al programma di essere compilato--- prezzo=-1; switch((partenza, destinazione)){ case (partenza1, destinazione1): prezzo=tariffa1; break; case (partenza1, destinazione2): prezzo=tariffa2; break; case (partenza1, destinazione3): prezzo=tariffa3; break; case (partenza2, destinazione1): prezzo=tariffa4; break; case (partenza2, destinazione2): prezzo=tariffa5; break; case (partenza2, destinazione3): prezzo=tariffa6; break; case (partenza3, destinazione1): prezzo=tariffa7; break; case (partenza3, destinazione2): prezzo=tariffa8; break; case (partenza3, destinazione3): prezzo=tariffa9; break; } return prezzo; } }