From 4fcffc8002d982a577ce9a646026b8af09ccadaf Mon Sep 17 00:00:00 2001 From: La Programmatrice Verde Date: Fri, 15 Nov 2024 22:10:31 +0100 Subject: [PATCH] Migrazione dalla repo unificata per separare le due tracce --- Program.cs | 571 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 569 insertions(+), 2 deletions(-) diff --git a/Program.cs b/Program.cs index 07b5961..2ea81ee 100644 --- a/Program.cs +++ b/Program.cs @@ -2,8 +2,575 @@ class Program { - static void Main(string[] args) + //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, secondoBiglietto; + //---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=-1; + prezzoAndata2=-1; + prezzoRitorno2=-1; + //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + string scelta; + + + + //Acquisto del primo biglietto + prezzoAndata1=AcquistoBiglietti(); + if (prezzoAndata1>=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": + prezzoRitorno1=AcquistoBiglietti(); + if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata1=0; //Il biglietto non è di sola andata + } + exit=1; + break; + case "s": + prezzoRitorno1=AcquistoBiglietti(); + if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata1=0; + } + exit=1; + break; + case "Y": + prezzoRitorno1=AcquistoBiglietti(); + if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata1=0; + } + exit=1; + break; + case "y": + prezzoRitorno1=AcquistoBiglietti(); + if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata1=0; + } + exit=1; + break; + case "": + prezzoRitorno1=AcquistoBiglietti(); + if (prezzoRitorno1>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + 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); + } + if(prezzoAndata1>=0 && prezzoRitorno1>=0){//se prezzoAndata1 o prezzoRitorno1==-1 l'utente ha selezionato di uscire + //Acquisto del secondo biglietto + Console.WriteLine("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();//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma + if (prezzoAndata2>=0){ + Console.Write("Acquistare anche il ritorno? [S/n] "); + scelta=Console.ReadLine(); + + do{ + switch (scelta){ + case "S": + prezzoRitorno2=AcquistoBiglietti(); + if (prezzoRitorno2>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata2=0; + } + exit=1; + break; + case "s": + prezzoRitorno2=AcquistoBiglietti(); + if (prezzoRitorno2>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata2=0; + } + exit=1; + break; + case "Y": + prezzoRitorno2=AcquistoBiglietti(); + if (prezzoRitorno2>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata2=0; + } + exit=1; + break; + case "y": + prezzoRitorno2=AcquistoBiglietti(); + if (prezzoRitorno2>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata2=0; + } + exit=1; + break; + case "": + prezzoRitorno2=AcquistoBiglietti(); + if (prezzoRitorno2>=0){//se prezzoRitorno==-1 allora l'utente ha selezionato di uscire dal programma + soloAndata2=0; + } + exit=1; + break; + case "N": + soloAndata2=1; + exit=1; + break; + case "n": + 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();//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma + if (prezzoAndata2>=0){ + 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": + soloAndata2=1; + exit=1; + break; + case "n": + 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();//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma + if (prezzoAndata2>=0){ + 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": + soloAndata2=1; + exit=1; + break; + case "n": + 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();//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma + if (prezzoAndata2>=0){ + 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": + soloAndata2=1; + exit=1; + break; + case "n": + 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();//se prezzoAndata==-1 allora l'utente ha selezionato di uscire dal programma + if (prezzoAndata2>=0){ + 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": + soloAndata2=1; + exit=1; + break; + case "n": + 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); + } + + if(prezzoAndata2>=0 && prezzoRitorno2>=0){//se prezzoAndata2 o prezzoRitorno2==-1 l'utente ha selezionato di uscire + //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; + } + } + } + if(totale>=0){ + Console.WriteLine("Totale: " +totale); + } + + } + static int AcquistoBiglietti(){ + //dichiarazione e inizializzazione variabili + string partenza, destinazione; + int prezzo; + prezzo=0; + partenza=SceltaPartenza(); + if(partenza!="0"){ + destinazione=SceltaDestinazione(); + if(destinazione!="0"){ + prezzo=PrezzoVolo(partenza, destinazione); + } + } + else{ + prezzo=-1; + } + return prezzo; + } + static string SceltaPartenza() { - Console.WriteLine("Hello, World!"); + //dichiarazione e inizializzazione variabili + string partenza; + partenza=null; + int scelta, exit; + exit=9; + + //selezione partenza + do{ + Console.WriteLine("Da dove si parte?"); + Console.WriteLine("1. Milano"); + Console.WriteLine("2. Bangkok"); + Console.WriteLine("3. Berlino"); + 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){ + return Convert.ToString(exit); + } + else{ + return partenza; + } + + + } + static string SceltaDestinazione() + { + //dichiarazione e inizializzazione variabili + string destinazione; + destinazione=null; + int scelta, exit; + exit=9; + + //selezione destinazione + do{ + Console.WriteLine("Dove si vuole andare?"); + Console.WriteLine("1. Milano"); + Console.WriteLine("2. Bangkok"); + Console.WriteLine("3. Berlino"); + 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){ + return Convert.ToString(exit); + } + else{ + return destinazione; + } + + } + static int PrezzoVolo(string partenza, string destinazione){ + 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; + 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; } }