namespace aeroporto_livello1; 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 sconto=10; int prezzoAndata, totale, prezzoRitorno, exit; //---queste variabili hanno dei valori che vengono rigettati dagli switch in modo da non avere una scelta di default valida--- exit=0; totale=-1; //---------------------------------------------------------------------------------------------------------------------------------------- string scelta; //Acquisto del biglietto prezzoAndata=AcquistoBiglietti(); if (prezzoAndata>=0){//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma Console.Write("Acquistare anche il ritorno? [S/n] "); scelta=Console.ReadLine(); do{ switch (scelta){ case "S": prezzoRitorno=AcquistoBiglietti(); if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma totale=(prezzoAndata-(prezzoAndata*sconto/100))+(prezzoRitorno-(prezzoRitorno*sconto/100)); } exit=1; break; case "s": prezzoRitorno=AcquistoBiglietti(); if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma totale=(prezzoAndata-(prezzoAndata*sconto/100))+(prezzoRitorno-(prezzoRitorno*sconto/100)); } exit=1; break; case "Y": prezzoRitorno=AcquistoBiglietti(); if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma totale=(prezzoAndata-(prezzoAndata*sconto/100))+(prezzoRitorno-(prezzoRitorno*sconto/100)); } exit=1; break; case "y": prezzoRitorno=AcquistoBiglietti(); if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma totale=(prezzoAndata-(prezzoAndata*sconto/100))+(prezzoRitorno-(prezzoRitorno*sconto/100)); } exit=1; break; case "": prezzoRitorno=AcquistoBiglietti(); if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma totale=(prezzoAndata-(prezzoAndata*sconto/100))+(prezzoRitorno-(prezzoRitorno*sconto/100)); } exit=1; break; case "N": totale=prezzoAndata; exit=1; break; case "n": totale=prezzoAndata; exit=1; break; default: Console.WriteLine("Scelta non valida"); break; } } while(exit==0); } if (totale>=0){ Console.WriteLine("Totale: " +totale); } } static int AcquistoBiglietti(){ //dichiarazione e inizializzazione variabili string partenza, destinazione; int prezzo; prezzo=-1; partenza=SceltaPartenza(); if(partenza!="0"){ destinazione=SceltaDestinazione(); if(destinazione!="0"){ 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 che viene rigettato dallo switch in modo da non avere una scelta di default valida--- exit=-1; //selezione partenza do{ Console.WriteLine("Da dove si parte?"); Console.WriteLine("1. " +partenza1); Console.WriteLine("2. " +partenza2); Console.WriteLine("3. " +partenza3); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta=Convert.ToInt32(Console.ReadLine()); switch(scelta){ case 0: exit=0; break; 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 && exit!=0); if (exit==0){//se viene scelto di uscire restituisco un valore che non corrisponde a una partenza return Convert.ToString(exit); } else{ return partenza; } } static string SceltaDestinazione() { //dichiarazione e inizializzazione variabili string destinazione; destinazione=null; int scelta, exit; //---questa variabile ha un valore che viene rigettato dallo switch in modo da non avere una scelta di default valida--- exit=-1; //selezione destinazione do{ Console.WriteLine("Dove si vuole andare?"); Console.WriteLine("1. " +destinazione1); Console.WriteLine("2. " +destinazione2); Console.WriteLine("3. " +destinazione3); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta=Convert.ToInt32(Console.ReadLine()); switch(scelta){ case 0: exit=0; break; 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 && exit!=0); if (exit==0){//se viene scelto di uscire restituisco un valore che non corrisponde a una destinazione return Convert.ToString(exit); } else{ 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 che viene rigettato dallo switch in modo da non avere una scelta di default valida--- prezzo=-1; switch((partenza, destinazione)){//switch a due variabili per verificare tutte le combinazioni (tabella della verità) 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; } }