diff --git a/L1E1/App.config b/L1E1/App.config
new file mode 100644
index 0000000..5754728
--- /dev/null
+++ b/L1E1/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E1/L1E1.csproj b/L1E1/L1E1.csproj
new file mode 100644
index 0000000..b67aa48
--- /dev/null
+++ b/L1E1/L1E1.csproj
@@ -0,0 +1,54 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}
+ Exe
+ L1E1
+ L1E1
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E1/L1E1.sln b/L1E1/L1E1.sln
new file mode 100644
index 0000000..642aa95
--- /dev/null
+++ b/L1E1/L1E1.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33723.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "L1E1", "L1E1.csproj", "{CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CC6E8B6E-1D5E-4A00-B2B9-0725E65EA4A3}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {F9D23855-AEAE-41C7-BC45-4B6237A4893A}
+ EndGlobalSection
+EndGlobal
diff --git a/L1E1/Player.cs b/L1E1/Player.cs
new file mode 100644
index 0000000..d8a3edb
--- /dev/null
+++ b/L1E1/Player.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace L1E1
+{
+ internal class Player
+ {
+
+ public int number { get; set; }
+ public string name { get; set; }
+ public int goals { get; set; }
+ public int speedPoints { get; set; }
+ public int assistsPoints { get; set; }
+ public int passingPoints { get; set; }
+ public int defensePoints { get; set; }
+
+ public Player(string playerName, int playerNumber, int playerGoals, int playerSpeed, int playerAssistsPoints, int playerPassingPoints, int playerDefensePoints)
+ {
+ this.name = playerName;
+ this.number = playerNumber;
+ this.goals = playerGoals;
+ this.speedPoints = playerSpeed;
+ this.assistsPoints = playerAssistsPoints;
+ this.passingPoints = playerPassingPoints;
+ this.defensePoints = playerDefensePoints;
+
+ }
+
+ }
+}
diff --git a/L1E1/Program.cs b/L1E1/Program.cs
new file mode 100644
index 0000000..6898628
--- /dev/null
+++ b/L1E1/Program.cs
@@ -0,0 +1,270 @@
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace L1E1
+{
+ //Blindma1den Discord Community - Programming Level 1, Exercise 1
+
+ /*
+ 1. Manchester United FC has hired you as a developer. Develop a program that helps the coach identify their fastest player, player with the most goals, assists, passing accuracy, and defensive involvements.
+The system should also allow comparison between two players. Use the following player profiles:
+
+Bruno Fernandes: 5 goals, 6 points in speed, 9 points in assists, 10 points in passing accuracy, 3 defensive involvements. Corresponds to jersey number 8.
+Rasmus Hojlund: 12 goals, 8 points in speed, 2 points in assists, 6 points in passing accuracy, 2 defensive involvements. Corresponds to jersey number 11.
+Harry Maguire: 1 goal, 5 points in speed, 1 point in assists, 7 points in passing accuracy, 9 defensive involvements. Corresponds to jersey number 5.
+Alejandro Garnacho: 8 goals, 7 points in speed, 8 points in assists, 6 points in passing accuracy, 0 defensive involvements. Corresponds to jersey number 17.
+Mason Mount: 2 goals, 6 points in speed, 4 points in assists, 8 points in passing accuracy, 1 defensive involvement. Corresponds to jersey number 7.
+
+The program functions as follows: The coach accesses the system and encounters a menu with the following options:
+
+Player Review: By entering the player's jersey number, they can access the player's characteristics.
+Compare two players: The system prompts for two jersey numbers and displays the data of both players on screen.
+Identify the fastest player: Displays the player with the most points in speed.
+Identify the top goal scorer: Displays the player with the most points in goals.
+Identify the player with the most assists: Displays the player with the most points in assists.
+Identify the player with the highest passing accuracy: Displays the player with the most points in passing accuracy.
+Identify the player with the most defensive involvements: Displays the player with the most points in defensive involvements.
+The system should also allow returning to the main menu.
+ */
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ const int exitOption = 8;
+
+ Player pl1 = new Player("Bruno Fernandez", 8, 5, 6, 9, 10, 3);
+ Player pl2 = new Player("Rasmus Hojlund", 11, 12, 8, 2, 6, 2);
+ Player pl3 = new Player("Harry Maguire", 5, 1, 5, 1, 7, 9);
+ Player pl4 = new Player("Alejandro Garnacho", 17, 8, 7, 8, 6, 0);
+ Player pl5 = new Player("Mason Mount", 7, 2, 6, 4, 8, 1);
+
+ Player[] manchesterUnited = { pl1, pl2, pl3, pl4, pl5 };
+
+ int menuOption = 0;
+
+ while (menuOption != exitOption)
+ {
+ Console.Clear();
+ ShowMainMenu();
+ int.TryParse(Console.ReadLine(), out menuOption);
+
+ switch (menuOption)
+ {
+ case 1: //Review 1 Player
+ PlayerReview(manchesterUnited);
+ break;
+ case 2:
+ ComparePlayers(manchesterUnited);
+ break;
+ case 3:
+ FastestPlayer(manchesterUnited);
+ break;
+ case 4:
+ TopGoalScorer(manchesterUnited);
+ break;
+ case 5:
+ MostAssistsPlayer(manchesterUnited);
+ break;
+ case 6:
+ HighestPassingPlayer(manchesterUnited);
+ break;
+ case 7:
+ MostDefensivePlayer(manchesterUnited);
+ break;
+ case 8:
+ Console.WriteLine("Thanks for using the MUFC Software!");
+ Console.WriteLine("Press any key to exit...");
+ Console.ReadKey();
+ Environment.Exit(0);
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ }
+
+ static void ShowMainMenu()
+ {
+ Console.Clear();
+ Console.WriteLine("--- MANCHESTER UNITED FC SOFTWARE ---");
+ Console.WriteLine("Welcome to the Manchester United FC Official Software©.\nPlease, choose an option from the menu that is being displayed below:");
+ Console.WriteLine(
+ "\n ----------------------------------------------------------------------------------------------------------" +
+ "\n1. REVIEW A PLAYER: This option allows you to see all the information that a Player has." +
+ "\n2. COMPARE PLAYERS: This option allows you to compare 2 players" +
+ "\n3. FASTEST PLAYER: This option allows you to see who is the fastest player." +
+ "\n4. TOP GOAL SCOARER: This option allows you to see who is the Top Goal Scoarer of the team" +
+ "\n5. MOST ASSISTS PLAYER: This option allows you to see which Player has the most assists in the team" +
+ "\n6. HIGHEST PASSING ACCURACY: This option allows you to identify the Player with the highest passing accuracy" +
+ "\n7. MOST DEFENSIVE PLAYER: This option allows you to see the Player with the most defensive involvements" +
+ "\n----------------------------------------------------------------------------------------------------------" +
+ "\nRemember: You can type '8' to exit the Software!");
+
+ }
+ static void PlayerReview(Player[] teamParameter)
+ {
+ int jerseyNumber;
+ int confirmOption = 0;
+ Console.Clear();
+ Console.WriteLine("Welcome, this is the Player Review option.\nPlease, enter the player's jersey number to continue");
+ int.TryParse(Console.ReadLine(), out jerseyNumber);
+
+ foreach (var player in teamParameter)
+ {
+ if (player.number == jerseyNumber)
+ {
+ PlayerInfo(player);
+ Console.WriteLine("Press a key to continue...");
+ Console.ReadKey();
+ }
+ }
+ }
+
+ static void ComparePlayers(Player[] teamParameter)
+ {
+ int firstPlayer, secondPlayer;
+ Console.Clear();
+ Console.WriteLine("Please, enter the jersey number of the first player");
+ int.TryParse(Console.ReadLine(), out firstPlayer);
+ Console.WriteLine("Please, enter the jersey number of the first player");
+ int.TryParse(Console.ReadLine(), out secondPlayer);
+
+ foreach (var player in teamParameter)
+ {
+ if (player.number == firstPlayer)
+ {
+ Console.WriteLine("First Player:");
+ PlayerInfo(player);
+ }
+
+ if (player.number == secondPlayer)
+ {
+ Console.WriteLine("Second Player:");
+ PlayerInfo(player);
+ }
+ }
+
+ Console.WriteLine("Press any key to continue...");
+ Console.ReadKey();
+
+ }
+
+ static void FastestPlayer(Player[] teamParameter)
+ {
+ int maxSpeed = 0;
+ Player fastestPlayer = null;
+
+ foreach (var player in teamParameter)
+ {
+ if (player.speedPoints > maxSpeed)
+ {
+ maxSpeed = player.speedPoints;
+ fastestPlayer = player;
+ }
+ }
+
+ Console.WriteLine("Fastest Player: \n");
+ PlayerInfo(fastestPlayer);
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+
+ static void TopGoalScorer(Player[] teamParameter)
+ {
+ int maxGoals = 0;
+ Player topGoalerPlayer = null;
+
+ foreach (var player in teamParameter)
+ {
+ if (player.goals > maxGoals)
+ {
+ maxGoals = player.goals;
+ topGoalerPlayer = player;
+ }
+ }
+ Console.WriteLine("Top Goaler Player: \n");
+ PlayerInfo(topGoalerPlayer);
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+
+ }
+
+ static void MostAssistsPlayer(Player[] teamParameter)
+ {
+ int maxAssists = 0;
+ Player mostAssistsPlayer = null;
+
+ foreach (var player in teamParameter)
+ {
+ if (player.assistsPoints > maxAssists)
+ {
+ maxAssists = player.assistsPoints;
+ mostAssistsPlayer = player;
+ }
+ }
+ Console.WriteLine("Most Assists Player: \n");
+ PlayerInfo(mostAssistsPlayer);
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+
+ static void HighestPassingPlayer(Player[] teamParameter)
+ {
+ int highestNumPassing = 0;
+ Player highestPassingPlayer = null;
+
+ foreach (var player in teamParameter)
+ {
+ if (player.passingPoints > highestNumPassing)
+ {
+ highestNumPassing = player.passingPoints;
+ highestPassingPlayer = player;
+ }
+ }
+ Console.WriteLine("Highest Passing Points Player: \n");
+ PlayerInfo(highestPassingPlayer);
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+
+ static void MostDefensivePlayer(Player[] teamParameter)
+ {
+ int mostDefense = 0;
+ Player mostDefensivePlayer = null;
+
+ foreach (var player in teamParameter)
+ {
+ if (player.defensePoints > mostDefense)
+ {
+ mostDefense = player.defensePoints;
+ mostDefensivePlayer = player;
+ }
+ }
+ Console.WriteLine("Most Defensive Player: \n");
+ PlayerInfo(mostDefensivePlayer);
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+
+ static void PlayerInfo(Player playerParameter)
+ {
+ Console.WriteLine("---------------------------");
+ Console.WriteLine("--- PLAYER INFORMATION ---");
+ Console.WriteLine($"Player's Jersey Number: {playerParameter.number}, Name: {playerParameter.name}");
+ Console.WriteLine("STATISTICS");
+ Console.WriteLine($"GOALS: {playerParameter.goals}" +
+ $"\nSPEED: {playerParameter.speedPoints}" +
+ $"\nASSISTS: {playerParameter.assistsPoints}" +
+ $"\nPASSING ACC: {playerParameter.passingPoints}" +
+ $"\nDEFENSE: {playerParameter.defensePoints}");
+ Console.WriteLine("---------------------------");
+
+ }
+ }
+}
diff --git a/L1E1/Properties/AssemblyInfo.cs b/L1E1/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3dde024
--- /dev/null
+++ b/L1E1/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos valores de atributo para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("L1E1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("L1E1")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde
+// COM, establezca el atributo ComVisible en true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM.
+[assembly: Guid("cc6e8b6e-1d5e-4a00-b2b9-0725e65ea4a3")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de compilación
+// Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión
+// utilizando el carácter "*", como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/L1E1/bin/Debug/L1E1.exe b/L1E1/bin/Debug/L1E1.exe
new file mode 100644
index 0000000..f515034
Binary files /dev/null and b/L1E1/bin/Debug/L1E1.exe differ
diff --git a/L1E1/bin/Debug/L1E1.exe.config b/L1E1/bin/Debug/L1E1.exe.config
new file mode 100644
index 0000000..5754728
--- /dev/null
+++ b/L1E1/bin/Debug/L1E1.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E1/bin/Debug/L1E1.pdb b/L1E1/bin/Debug/L1E1.pdb
new file mode 100644
index 0000000..86f1b40
Binary files /dev/null and b/L1E1/bin/Debug/L1E1.pdb differ
diff --git a/L1E1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/L1E1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..af27606
Binary files /dev/null and b/L1E1/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/L1E1/obj/Debug/L1E1.csproj.AssemblyReference.cache b/L1E1/obj/Debug/L1E1.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..d764217
Binary files /dev/null and b/L1E1/obj/Debug/L1E1.csproj.AssemblyReference.cache differ
diff --git a/L1E1/obj/Debug/L1E1.csproj.CoreCompileInputs.cache b/L1E1/obj/Debug/L1E1.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..89864da
--- /dev/null
+++ b/L1E1/obj/Debug/L1E1.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+cd4ca8154aa58aaa5a560a0c4baaae3561f6753e
diff --git a/L1E1/obj/Debug/L1E1.csproj.FileListAbsolute.txt b/L1E1/obj/Debug/L1E1.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..c7f3890
--- /dev/null
+++ b/L1E1/obj/Debug/L1E1.csproj.FileListAbsolute.txt
@@ -0,0 +1,8 @@
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\bin\Debug\L1E1.exe.config
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\bin\Debug\L1E1.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\bin\Debug\L1E1.pdb
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\obj\Debug\L1E1.csproj.AssemblyReference.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\obj\Debug\L1E1.csproj.SuggestedBindingRedirects.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\obj\Debug\L1E1.csproj.CoreCompileInputs.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\obj\Debug\L1E1.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E1\obj\Debug\L1E1.pdb
diff --git a/L1E1/obj/Debug/L1E1.csproj.SuggestedBindingRedirects.cache b/L1E1/obj/Debug/L1E1.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/L1E1/obj/Debug/L1E1.exe b/L1E1/obj/Debug/L1E1.exe
new file mode 100644
index 0000000..f515034
Binary files /dev/null and b/L1E1/obj/Debug/L1E1.exe differ
diff --git a/L1E1/obj/Debug/L1E1.pdb b/L1E1/obj/Debug/L1E1.pdb
new file mode 100644
index 0000000..86f1b40
Binary files /dev/null and b/L1E1/obj/Debug/L1E1.pdb differ
diff --git a/L1E2/App.config b/L1E2/App.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E2/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E2/L1E2.csproj b/L1E2/L1E2.csproj
new file mode 100644
index 0000000..f1f064b
--- /dev/null
+++ b/L1E2/L1E2.csproj
@@ -0,0 +1,53 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {3A7BFC63-B390-4C93-84FE-F365E162432B}
+ Exe
+ L1E2
+ L1E2
+ v4.8
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E2/L1E2.sln b/L1E2/L1E2.sln
new file mode 100644
index 0000000..b152434
--- /dev/null
+++ b/L1E2/L1E2.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33723.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "L1E2", "L1E2.csproj", "{3A7BFC63-B390-4C93-84FE-F365E162432B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3A7BFC63-B390-4C93-84FE-F365E162432B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3A7BFC63-B390-4C93-84FE-F365E162432B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3A7BFC63-B390-4C93-84FE-F365E162432B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3A7BFC63-B390-4C93-84FE-F365E162432B}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {5377EC9B-3872-48C6-8388-36ECD6602971}
+ EndGlobalSection
+EndGlobal
diff --git a/L1E2/Program.cs b/L1E2/Program.cs
new file mode 100644
index 0000000..b7066fa
--- /dev/null
+++ b/L1E2/Program.cs
@@ -0,0 +1,340 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace L1E2
+{
+ internal class Program
+ {
+
+ /*
+
+ 2. A travel agency has a special offer for traveling in any season of 2024. Their destinations are:
+
+Winter: Andorra and Switzerland. In Andorra, there are skiing activities, and in Switzerland, there's a tour of the Swiss Alps.
+Summer: Spain and Portugal. In Spain, there are hiking and extreme sports activities. In Portugal, there are activities on the beaches.
+Spring: France and Italy. In France, there are extreme sports activities, and in Italy, there's a cultural and historical tour.
+Autumn: Belgium and Austria. In Belgium, there are hiking and extreme sports activities, and in Austria, there are cultural and historical activities.
+Note: Traveling in winter costs $100, in autumn $200, in spring $300, and in summer $400.
+
+Design a system that helps users choose their best destination according to their personal preferences and the season they want to travel in.
+12. Important: With the information you have, you should ask the user the right questions and display on screen what their best destination would be.
+
+Clue: You could consider the user's budget
+ */
+
+
+ static int selectedSeason;
+ static int selectedActivity;
+ static string selectedCountry;
+ static string seasonName;
+ static float leftOver;
+ static float initialBudget;
+ static float selectedSeasonCost;
+
+ static bool canGo;
+
+ const float winterCost = 100;
+ const float autumnCost = 200;
+ const float springCost = 300;
+ const float summerCost = 400;
+
+
+
+ static void Main(string[] args)
+ {
+ Console.WriteLine(" --- TRAVEL AGENCY ---");
+ Console.WriteLine("Welcome to our Travel Agency. Please, enter your budget so we can adjust a plan for you.");
+ float.TryParse(Console.ReadLine(), out initialBudget);
+
+ Console.WriteLine("Great!\nNow, please, choose your prefered season of the year from the following options:");
+ Console.WriteLine(" --[SEASONS]-- " +
+ "\n1. WINTER" +
+ "\n2. AUTUMN" +
+ "\n3. SPRING" +
+ "\n4. SUMMER");
+
+
+ Console.WriteLine("Enter the number of your prefered season.");
+ do
+ {
+
+ int.TryParse(Console.ReadLine(), out selectedSeason);
+
+ if ((selectedSeason <= 0) || (selectedSeason >= 5))
+ {
+ Console.WriteLine("INVALID. You must enter a number between 1 and 4, as is shown in the list of options.");
+ }
+
+ } while ((selectedSeason <= 0) || (selectedSeason >= 5));
+
+ if (selectedSeason == 1)
+ {
+ seasonName = "Winter";
+ }
+ else if (selectedSeason == 2)
+ {
+ seasonName = "Autumn";
+ }
+ else if (selectedSeason == 3)
+ {
+ seasonName = "Spring";
+ }
+ else
+ {
+ seasonName = "Summer";
+ }
+
+
+ switch (selectedSeason)
+ {
+ case 1://WINTER
+ Winter();
+ AgencyRecomendation();
+ break;
+ case 2:
+ Autumn();
+ AgencyRecomendation();
+ break;
+ case 3:
+ Spring();
+ AgencyRecomendation();
+ break;
+ case 4:
+ Summer();
+ AgencyRecomendation();
+ break;
+ default:
+ Console.WriteLine("DEFAULT CASE. Try Again.");
+ break;
+ }
+
+
+
+ }
+
+ static void Winter()
+ {
+ selectedSeasonCost = winterCost;
+ leftOver = initialBudget - winterCost;
+ if (initialBudget < winterCost)
+ {
+ canGo = false;
+ }
+ else
+ {
+ canGo = true;
+ }
+ Console.WriteLine(" ---[ WINTER ]--- ");
+ Console.WriteLine("You chose WINTER as your prefered season.");
+ Console.WriteLine("In Winter, we have different kind of activities to enjoy!");
+ Console.WriteLine("---" +
+ "\n1. Skiing" +
+ "\n2. Tour of the Swiss Alps" +
+ "\nPlease, choose one from above...");
+
+ do
+ {
+ int.TryParse(Console.ReadLine(), out selectedActivity);
+ if ((selectedActivity <= 0) || (selectedActivity >= 3))
+ {
+ Console.WriteLine("INVALID. You must enter a number between 1 and 2, as is shown in the list of activities.");
+ }
+
+ } while ((selectedActivity <= 0) || (selectedActivity >= 3));
+
+ if (selectedActivity == 1)
+ {
+ Console.WriteLine("You chose SKIING as your preferred activity");
+ selectedCountry = "Andorra";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ else
+ {
+ Console.WriteLine("You chose the Tour of the Swiss Alps");
+ selectedCountry = "Switzerland";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ }
+
+ static void Autumn()
+ {
+ selectedSeasonCost = autumnCost;
+ leftOver = initialBudget - autumnCost;
+ if (initialBudget < autumnCost)
+ {
+ canGo = false;
+ }
+ else
+ {
+ canGo = true;
+ }//hiking and extreme sports activities, and in Austria, there are cultural and historical activities.
+ Console.WriteLine(" ---[ AUTUMN ]--- ");
+ Console.WriteLine("You chose AUTUMN as your prefered season.");
+ Console.WriteLine("In Autumn, we have different kind of activities to enjoy!");
+ Console.WriteLine("---" +
+ "\n1. Hiking and Extreme Sports" +
+ "\n2. Cultural and Historical Activities" +
+ "\nPlease, choose one from above...");
+
+ do
+ {
+ int.TryParse(Console.ReadLine(), out selectedActivity);
+ if ((selectedActivity <= 0) || (selectedActivity >= 3))
+ {
+ Console.WriteLine("INVALID. You must enter a number between 1 and 2, as is shown in the list of activities.");
+ }
+
+ } while ((selectedActivity <= 0) || (selectedActivity >= 3));
+
+ if (selectedActivity == 1)
+ {
+ Console.WriteLine("You chose Hiking and Extreme Sports as your preferred activity");
+ selectedCountry = "Belgium";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ else
+ {
+ Console.WriteLine("Cultural and Historical Activities");
+ selectedCountry = "Austria";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ }
+
+ static void Spring()
+ {
+ selectedSeasonCost = springCost;
+ leftOver = initialBudget - springCost;
+ if (initialBudget < springCost)
+ {
+ canGo = false;
+ }
+ else
+ {
+ canGo = true;
+ }//France extreme sports activities, and in Italy, there's a cultural and historical tour
+ Console.WriteLine(" ---[ SPRING ]--- ");
+ Console.WriteLine("You chose SPRING as your prefered season.");
+ Console.WriteLine("In Srping, we have different kind of activities to enjoy!");
+ Console.WriteLine("---" +
+ "\n1. Extreme Sports" +
+ "\n2. Cultural and Historical Tour" +
+ "\nPlease, choose one from above...");
+
+ do
+ {
+ int.TryParse(Console.ReadLine(), out selectedActivity);
+ if ((selectedActivity <= 0) || (selectedActivity >= 3))
+ {
+ Console.WriteLine("INVALID. You must enter a number between 1 and 2, as is shown in the list of activities.");
+ }
+
+ } while ((selectedActivity <= 0) || (selectedActivity >= 3));
+
+ if (selectedActivity == 1)
+ {
+ Console.WriteLine("You chose Extreme Sports as your preferred activity");
+ selectedCountry = "France";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ else
+ {
+ Console.WriteLine("Cultural and Historical Tour");
+ selectedCountry = "Italy";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+
+ }
+
+ static void Summer()
+ {
+ selectedSeasonCost = summerCost;
+ leftOver = initialBudget - summerCost;
+ if (initialBudget < summerCost)
+ {
+ canGo = false;
+ }
+ else
+ {
+ canGo = true;
+ }//Spain and Portugal. In Spain, there are hiking and extreme sports activities. In Portugal, there are activities on the beaches.
+ Console.WriteLine(" ---[ SUMMER ]--- ");
+ Console.WriteLine("You chose SUMMER as your prefered season.");
+ Console.WriteLine("In Summer, we have different kind of activities to enjoy!");
+ Console.WriteLine("---" +
+ "\n1. Hiking and Extreme Sports" +
+ "\n2. Beach activities." +
+ "\nPlease, choose one from above...");
+
+ do
+ {
+ int.TryParse(Console.ReadLine(), out selectedActivity);
+ if ((selectedActivity <= 0) || (selectedActivity >= 3))
+ {
+ Console.WriteLine("INVALID. You must enter a number between 1 and 2, as is shown in the list of activities.");
+ }
+
+ } while ((selectedActivity <= 0) || (selectedActivity >= 3));
+
+ if (selectedActivity == 1)
+ {
+ Console.WriteLine("You chose Hiking and Extreme Sports as your preferred activity");
+ selectedCountry = "Spain";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ else
+ {
+ Console.WriteLine("Beach Activities");
+ selectedCountry = "Portugal";
+
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ }
+ static void AgencyRecomendation()
+ {
+
+ if (canGo == true)
+ {
+ Console.WriteLine("\nBased on your budget and the cost of the season, we got this: ");
+ Console.WriteLine("---- [ RECEIPT ] ----" +
+ "\nStatus: You CAN travel." +
+ $"\nInitial Budget: {initialBudget}" +
+ $"\nSeason Cost: {selectedSeasonCost}" +
+ $"\nLeftover: {leftOver}");
+ Console.WriteLine($"Our recommendation to you for destination is {selectedCountry} in {seasonName}");
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ else
+ {
+ Console.WriteLine("\nBased on your budget and the cost of the season, we got this: ");
+ Console.WriteLine("---- [ RECEIPT ] ----" +
+ "\nStatus: You CANNOT travel!!!" +
+ "\nYour budget is under the required minimum to pay for the Season and Activity you choose for." +
+ $"\nInitial Budget: {initialBudget}" +
+ $"\nSeason Cost: {selectedSeasonCost}" +
+ $"\nLeftover: {leftOver}");
+ Console.WriteLine($"Our recommendation to you for destination is {selectedCountry} in {seasonName}");
+ Console.WriteLine("\nPress any key to continue...");
+ Console.ReadKey();
+ }
+ }
+ }
+}
diff --git a/L1E2/Properties/AssemblyInfo.cs b/L1E2/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..260b343
--- /dev/null
+++ b/L1E2/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos valores de atributo para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("L1E2")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("L1E2")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde
+// COM, establezca el atributo ComVisible en true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM.
+[assembly: Guid("3a7bfc63-b390-4c93-84fe-f365e162432b")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de compilación
+// Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión
+// utilizando el carácter "*", como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/L1E2/bin/Debug/L1E2.exe b/L1E2/bin/Debug/L1E2.exe
new file mode 100644
index 0000000..0e1840d
Binary files /dev/null and b/L1E2/bin/Debug/L1E2.exe differ
diff --git a/L1E2/bin/Debug/L1E2.exe.config b/L1E2/bin/Debug/L1E2.exe.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E2/bin/Debug/L1E2.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E2/bin/Debug/L1E2.pdb b/L1E2/bin/Debug/L1E2.pdb
new file mode 100644
index 0000000..b925201
Binary files /dev/null and b/L1E2/bin/Debug/L1E2.pdb differ
diff --git a/L1E2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/L1E2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..79c3dd2
Binary files /dev/null and b/L1E2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/L1E2/obj/Debug/L1E2.csproj.AssemblyReference.cache b/L1E2/obj/Debug/L1E2.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..0449b99
Binary files /dev/null and b/L1E2/obj/Debug/L1E2.csproj.AssemblyReference.cache differ
diff --git a/L1E2/obj/Debug/L1E2.csproj.CoreCompileInputs.cache b/L1E2/obj/Debug/L1E2.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..036c9ce
--- /dev/null
+++ b/L1E2/obj/Debug/L1E2.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+2f1b5aa9ca9324e732c8dc8ad98b9a6b4836d80a
diff --git a/L1E2/obj/Debug/L1E2.csproj.FileListAbsolute.txt b/L1E2/obj/Debug/L1E2.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..e978421
--- /dev/null
+++ b/L1E2/obj/Debug/L1E2.csproj.FileListAbsolute.txt
@@ -0,0 +1,8 @@
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\bin\Debug\L1E2.exe.config
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\bin\Debug\L1E2.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\bin\Debug\L1E2.pdb
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\obj\Debug\L1E2.csproj.AssemblyReference.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\obj\Debug\L1E2.csproj.SuggestedBindingRedirects.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\obj\Debug\L1E2.csproj.CoreCompileInputs.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\obj\Debug\L1E2.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E2\obj\Debug\L1E2.pdb
diff --git a/L1E2/obj/Debug/L1E2.csproj.SuggestedBindingRedirects.cache b/L1E2/obj/Debug/L1E2.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/L1E2/obj/Debug/L1E2.exe b/L1E2/obj/Debug/L1E2.exe
new file mode 100644
index 0000000..0e1840d
Binary files /dev/null and b/L1E2/obj/Debug/L1E2.exe differ
diff --git a/L1E2/obj/Debug/L1E2.pdb b/L1E2/obj/Debug/L1E2.pdb
new file mode 100644
index 0000000..b925201
Binary files /dev/null and b/L1E2/obj/Debug/L1E2.pdb differ
diff --git a/L1E3/App.config b/L1E3/App.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E3/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E3/L1E3.csproj b/L1E3/L1E3.csproj
new file mode 100644
index 0000000..504d243
--- /dev/null
+++ b/L1E3/L1E3.csproj
@@ -0,0 +1,53 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {30F41711-CF0B-4BB1-9F28-416440A3A6F0}
+ Exe
+ L1E3
+ L1E3
+ v4.8
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E3/L1E3.sln b/L1E3/L1E3.sln
new file mode 100644
index 0000000..c9749f1
--- /dev/null
+++ b/L1E3/L1E3.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33723.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "L1E3", "L1E3.csproj", "{30F41711-CF0B-4BB1-9F28-416440A3A6F0}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {30F41711-CF0B-4BB1-9F28-416440A3A6F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {30F41711-CF0B-4BB1-9F28-416440A3A6F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {30F41711-CF0B-4BB1-9F28-416440A3A6F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {30F41711-CF0B-4BB1-9F28-416440A3A6F0}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {C38DAECE-3403-42AC-AAB8-75296092DCCF}
+ EndGlobalSection
+EndGlobal
diff --git a/L1E3/Program.cs b/L1E3/Program.cs
new file mode 100644
index 0000000..469b665
--- /dev/null
+++ b/L1E3/Program.cs
@@ -0,0 +1,298 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace L1E3
+{
+ internal class Program
+ {
+
+ /*The Valencia Hospital is developing an application to manage appointments.
+ * Design an algorithm for this application with the following features:
+
+ DONE
+ - It must have a login and validate the data; after the third failed attempt, it should be locked.
+
+
+ TO DO
+ - The user can schedule an appointment for: General Medicine, Emergency Care, Clinical Analysis, Cardiology,
+ Neurology, Nutrition, Physiotherapy, Traumatology, and Internal Medicine.
+ - There are 3 doctors for each specialty.
+ - The user can only book one appointment per specialist. An error message should be displayed if the user tries to choose two appointments with the same doctor or the same specialty. As a developer, you can choose the doctors' names.
+ - The maximum limit for appointments, in general, is 3.
+ - Upon selecting a specialty, it will display if the user prefers a morning or afternoon appointment and show available hours. As a developer, you can choose the hours.
+ - Display available specialists.
+ - The user can choose their preferred specialist.
+ - The basic process is: Login -> Choose specialty -> Choose doctor -> Choose time slot.*/
+
+ const string username = "admin";
+ const string password = "123456";
+ static int attempts = 3;
+ static int maxAppointments = 0;
+
+ static int optionChosed;
+
+ static int timeSlotOption;
+ static int confirmApp;
+
+
+
+ static string[] generalMedicineDocs = { "Elizabeth Olsen", "Chris Pratt", "Tom Holland" };
+ static string[] emergencyCareDocs = { "Laurence Fishburne", "Carrie Ann Moss", "Hugo Weaving" };
+ static string[] clinicalAnalysisDocs = { "Ruben Doblas Gundersen", "Samuel de Luque", "Guillermo Diaz Ibáñez" };
+ static string[] cardiologyDocs = { "Daarick Leeroy Lujan", "Anthony Bullón Gonzales", "Laura Malagon" };
+ static string[] neurologyDocs = { "Barry Allen", "Bruce Wayne", "Clark Kent" };
+ static string[] nutritionDocs = { "Tyson Diggs", "Zac Efron", "Peter Parker" };
+ static string[] physiotherapyDocs = { "Scott Adkins", "Matt Mullins", "Michael J. White" };
+ static string[] traumatologyDocs = { "Tony Stark", "Steve Rogers", "Johnny Storm" };
+ static string[] internalMedicineDocs = { "Keanu Reeves", "Christian Bale", "Ryan Gosling" };
+
+ static string[] morningHours = { "08:00", "09:30", "11:00" };
+ static string[] afternoonHours = { "13:00", "15:30", "17:20" };
+ static bool[] alreadyAppointment = { false, false, false, false, false, false, false, false, false };
+
+ static string[] especialidades = {"General Medicine", "Emergency Care", "Clinical Analysis", "Cardiology", "Neurology",
+ "Nutrition", "Physiotherapy", "Traumatology", "Internal Medicine"};
+
+
+ static int doctorChosed, hourSlotChosed;
+
+ static List specialities = new List()
+ {
+ generalMedicineDocs, emergencyCareDocs, clinicalAnalysisDocs, cardiologyDocs, neurologyDocs, nutritionDocs, physiotherapyDocs,
+ traumatologyDocs, internalMedicineDocs
+ };
+
+ static List slots = new List()
+ {
+ morningHours, afternoonHours
+ };
+
+
+
+
+ // Accede dinámicamente a los horarios según el horario seleccionado
+ //static string[] selectedTimeSlot = slots[hourSlotChosed - 1];
+
+
+
+ static void Main(string[] args)
+ {
+ Random random = new Random();
+ int randomDoctor = random.Next(1, 3);
+
+ Console.WriteLine("Welcome to the Official Valencia Hospital Appointments System.");
+
+ if (Login())
+ {
+ MainMenu();
+ }
+
+ while (optionChosed != 10)
+ {
+ MainMenu();
+ do
+ {
+ Console.WriteLine("Type a number to choose an option. (Enter '10' to exit the program)");
+ int.TryParse(Console.ReadLine(), out optionChosed);
+
+ } while ((optionChosed <= 0) || (optionChosed >= 11));
+
+ if (maxAppointments == 3)
+ {
+ Console.WriteLine("You have reached the limit of appointments. You can't make another one.");
+ Console.WriteLine("Quitting the system... Press Any Key to exit..");
+ Console.ReadKey();
+ Environment.Exit(0);
+ }
+
+ if (optionChosed == 10)
+ {
+ Console.Clear();
+ Console.WriteLine("Thanks for using our system.\nPress any key to exit...");
+ Console.ReadKey();
+ Environment.Exit(0);
+ }
+
+
+ if (optionChosed >=1 || optionChosed <=9)
+ {
+ if (alreadyAppointment[optionChosed - 1] != true)
+ {
+ Appointment(randomDoctor);
+ }
+ else
+ {
+ Console.WriteLine($"You already have one appointment in this specific speciality.");
+ Console.WriteLine("Press any key to return to menu");
+ Console.ReadKey();
+ MainMenu();
+ }
+ }
+
+ }
+
+ }
+
+ static bool Login()
+ {
+
+ //Declaro 2 strings que reciben el usuario y contraseña
+ string logUser, logPass;
+ //Declaro una variable de los intentos de logeo. Desde el inicio el primer intento de logeo se cuenta
+ int loginAttempts = 1;
+ //Declaro un booleano que confirma si pude acceder o no. si = true, no = false
+ bool grantedAccess = false;
+
+
+ //Un bucle dowhile que:
+ //Haga el proceso de Login y validación MIENTRAS QUE los 3 intentos de logeo inicial no sean menores o igual a 0
+ do
+ {
+ Console.Clear();
+ Console.WriteLine("---LOG-IN---");
+ Console.WriteLine("Type your username...");
+ logUser = Console.ReadLine();
+ Console.WriteLine("Type your password...");
+ logPass = Console.ReadLine();
+
+ if (logUser == username) // Si coincide con el usuario, pasa a validar contraseña
+ {
+ if (logPass == password) // Si coincide con la contra, le permite el acceso
+ {
+ Console.WriteLine($"Welcome! {username}");
+ grantedAccess = true; //permitimos acceso
+ Console.ReadKey();
+ break;
+
+ }
+ else
+ {
+ //En caso de no coincidir la contraseña, se suman los intentos del logeo desde el usuario
+ //Y SE RESTA 1 intento de los intentos generales
+ loginAttempts++;
+ attempts--;
+ //Se muestra "loginAttempts-1" para no contar el intento que está por realizar.
+ Console.WriteLine($"Invalid! You typed the wrong password. Login Attempt: {loginAttempts-1}, Login Attempts Left: {attempts}");
+ Console.ReadKey();
+ }
+ }
+ else
+ {
+ Console.WriteLine("User does not exists. Try again");
+ Console.WriteLine("Press a key to continue...");
+ Console.ReadLine();
+
+ }
+
+ } while (attempts > 0);
+
+ if (attempts <= 0) // si los intentos generales son igual o menor que 0, se bloquea el sistema
+ {
+ grantedAccess = false; //NO Permitimos acceso
+ Console.WriteLine("The system has been blocked due to too many attempts. Try again later...\nPress any key to exit...");
+ Console.ReadKey();
+ Environment.Exit(0);
+ }
+
+ return grantedAccess;
+ }
+
+ static void MainMenu()
+ {
+ Console.Clear();
+ Console.WriteLine("----- MAIN MENU -----");
+ Console.WriteLine("- Appointment System -");
+ Console.WriteLine("Please, choose an speciality from below according to your needs");
+ Console.WriteLine("--------------------------------------------" +
+ "\n1. General Medicine" +
+ "\n2. Emergency Care" +
+ "\n3. Clinical Analysis" +
+ "\n4. Cardiology" +
+ "\n5. Neurology" +
+ "\n6. Nutrition" +
+ "\n7. Physiotherapy" +
+ "\n8. Traumatology" +
+ "\n9. Internal Medicine" +
+ "\n---------------------------------------------" +
+ $"\nAPPOINTMENTS MADE: {maxAppointments}");
+
+ }
+ static void Appointment(int randomNumberParameter)
+ {
+ Console.Clear();
+ Console.WriteLine($"---- {especialidades[optionChosed-1]} Appointment ----");
+ Console.WriteLine("Select your preferred time slot.");
+ Console.WriteLine("1. Morning \n2. Afternoon");
+ int.TryParse(Console.ReadLine(), out timeSlotOption);
+
+
+ // Accede dinámicamente a los doctores según la especialidad seleccionada
+ string[] selectedSpecialityDoctors = specialities[optionChosed - 1];
+
+ if (timeSlotOption == 1) // TURNO DE LA MAÑANA --------------
+ {
+ Console.WriteLine("DOCTORS FOR MORNING APPOINTMENTS:");
+ for (int i = 0; i < randomNumberParameter; i++)
+ {
+ //Console.WriteLine($"{i+1} Doctors name: {generalMedicineDocs[i]}");
+ Console.WriteLine($"{i + 1} Doctors name: {selectedSpecialityDoctors[i]}");
+ }
+ foreach (var hours in morningHours)
+ {
+ Console.WriteLine($"Morning available hours: {hours}");
+ }
+
+ Console.WriteLine("Select a Doctor");
+ int.TryParse(Console.ReadLine(), out doctorChosed);
+ Console.WriteLine("Select a Time Slot");
+ int.TryParse(Console.ReadLine(), out hourSlotChosed);
+
+ }
+ else // TURNO DE LA TARDE -------------------
+ {
+ Console.WriteLine("DOCTORS FOR MORNING APPOINTMENTS:");
+ for (int i = 0; i < randomNumberParameter; i++)
+ {
+ Console.WriteLine($"{i + 1} Doctors name: {selectedSpecialityDoctors[i]}");
+ }
+ foreach (var hours in afternoonHours)
+ {
+ Console.WriteLine($"Morning available hours: {hours}");
+ }
+
+ Console.WriteLine("Select a Doctor");
+ int.TryParse(Console.ReadLine(), out doctorChosed);
+ Console.WriteLine("Select a Time Slot");
+ int.TryParse(Console.ReadLine(), out hourSlotChosed);
+
+ }
+
+
+ //CONFIRMAR CITA
+
+ Console.WriteLine("Confirm Appointment: 1. YES - 2. NO");
+ int.TryParse(Console.ReadLine(), out confirmApp);
+
+ if (confirmApp == 1)
+ {
+ alreadyAppointment[optionChosed-1] = true;
+ maxAppointments++;
+ Console.WriteLine("APPOINTMENT CONFIRMED. Going back... Press any key to continue");
+ Console.ReadKey();
+ MainMenu();
+
+ }
+ else
+ {
+ alreadyAppointment[optionChosed-1] = false;
+ Console.WriteLine("Appointment CANCELED. Going back... Press any key to continue");
+ Console.ReadKey();
+ MainMenu();
+ }
+
+ }
+ }
+}
diff --git a/L1E3/Properties/AssemblyInfo.cs b/L1E3/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1ba9ba0
--- /dev/null
+++ b/L1E3/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos valores de atributo para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("L1E3")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("L1E3")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde
+// COM, establezca el atributo ComVisible en true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM.
+[assembly: Guid("30f41711-cf0b-4bb1-9f28-416440a3a6f0")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de compilación
+// Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión
+// utilizando el carácter "*", como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/L1E3/bin/Debug/L1E3.exe b/L1E3/bin/Debug/L1E3.exe
new file mode 100644
index 0000000..4848e3b
Binary files /dev/null and b/L1E3/bin/Debug/L1E3.exe differ
diff --git a/L1E3/bin/Debug/L1E3.exe.config b/L1E3/bin/Debug/L1E3.exe.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E3/bin/Debug/L1E3.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E3/bin/Debug/L1E3.pdb b/L1E3/bin/Debug/L1E3.pdb
new file mode 100644
index 0000000..5a7c011
Binary files /dev/null and b/L1E3/bin/Debug/L1E3.pdb differ
diff --git a/L1E3/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/L1E3/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..939aa3c
Binary files /dev/null and b/L1E3/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/L1E3/obj/Debug/L1E3.csproj.AssemblyReference.cache b/L1E3/obj/Debug/L1E3.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..0449b99
Binary files /dev/null and b/L1E3/obj/Debug/L1E3.csproj.AssemblyReference.cache differ
diff --git a/L1E3/obj/Debug/L1E3.csproj.CoreCompileInputs.cache b/L1E3/obj/Debug/L1E3.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..036c9ce
--- /dev/null
+++ b/L1E3/obj/Debug/L1E3.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+2f1b5aa9ca9324e732c8dc8ad98b9a6b4836d80a
diff --git a/L1E3/obj/Debug/L1E3.csproj.FileListAbsolute.txt b/L1E3/obj/Debug/L1E3.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..6c217c4
--- /dev/null
+++ b/L1E3/obj/Debug/L1E3.csproj.FileListAbsolute.txt
@@ -0,0 +1,8 @@
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\bin\Debug\L1E3.exe.config
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\bin\Debug\L1E3.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\bin\Debug\L1E3.pdb
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\obj\Debug\L1E3.csproj.AssemblyReference.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\obj\Debug\L1E3.csproj.SuggestedBindingRedirects.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\obj\Debug\L1E3.csproj.CoreCompileInputs.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\obj\Debug\L1E3.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E3\obj\Debug\L1E3.pdb
diff --git a/L1E3/obj/Debug/L1E3.csproj.SuggestedBindingRedirects.cache b/L1E3/obj/Debug/L1E3.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/L1E3/obj/Debug/L1E3.exe b/L1E3/obj/Debug/L1E3.exe
new file mode 100644
index 0000000..4848e3b
Binary files /dev/null and b/L1E3/obj/Debug/L1E3.exe differ
diff --git a/L1E3/obj/Debug/L1E3.pdb b/L1E3/obj/Debug/L1E3.pdb
new file mode 100644
index 0000000..5a7c011
Binary files /dev/null and b/L1E3/obj/Debug/L1E3.pdb differ
diff --git a/L1E4/App.config b/L1E4/App.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E4/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E4/L1E4.csproj b/L1E4/L1E4.csproj
new file mode 100644
index 0000000..6e860e9
--- /dev/null
+++ b/L1E4/L1E4.csproj
@@ -0,0 +1,53 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}
+ Exe
+ L1E4
+ L1E4
+ v4.8
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E4/L1E4.sln b/L1E4/L1E4.sln
new file mode 100644
index 0000000..0a416cb
--- /dev/null
+++ b/L1E4/L1E4.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33723.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "L1E4", "L1E4.csproj", "{B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B54825ED-1FB7-4EBC-AD2E-30C40B2E8739}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {125A0065-C898-4E8E-AC71-B923E04B8B40}
+ EndGlobalSection
+EndGlobal
diff --git a/L1E4/Program.cs b/L1E4/Program.cs
new file mode 100644
index 0000000..5f728d9
--- /dev/null
+++ b/L1E4/Program.cs
@@ -0,0 +1,346 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace L1E4
+{
+ /*
+ * Login; it should be locked after the third failed attempt.
+ *
+ *
+ The RH Hotels chain exists in 5 countries: Spain, France, Portugal, Italy, and Germany.
+ Each country has its own hotels located in: Madrid, Barcelona, Valencia, Munich, Berlin, Rome, Milan, Paris, Marseille, Madeira, Lisbon, and Porto.
+
+ All hotels have 24 rooms each: 3 single rooms, 6 double rooms, 6 group rooms, 6 VIP suites and 3 luxury suites.
+ The user can make reservations at any time of the year and at any hour, and book as many rooms as desired.
+ Single rooms are priced at $100 per night
+ Double rooms at $200 per night
+ Group rooms at $350 per night
+ VIP suites at $450 per night
+ Luxury suites at $550 per night ---> applicable at any time of the year.
+
+ The algorithm functions as follows:
+ Login, choose country, choose city, choose room type, select the number of nights,
+ collect user data (name, surname, ID/passport), print the total cost, and if the user agrees,
+ print a confirmation message for the reservation. If not, return to the main menu.
+
+ */
+
+ class Prices
+ {
+ public int SingleRoom = 100;
+ public int DoubleRoom = 200;
+ public int GroupRoom = 350;
+ public int VipSuite = 450;
+ public int LuxurySuite = 550;
+
+ }
+
+ internal class Program
+ {
+
+ //Login variables
+ static int attempts = 3;
+ const string username = "admin";
+ const string password = "123";
+
+
+ //menu exit option
+ const int exitSystem = 2;
+
+ //prices
+ static float SingleRoomPrice = 100;
+ static float DoubleRoomPrice = 200;
+ static float GroupRoomPrice = 350;
+ static float VipSuitePrice = 450;
+ static float LuxurySuitePrice = 550;
+
+
+ //UserPreferences
+
+
+
+ //cities arrays
+ static string[] countries = {"Spain","Germany","Italy", "France", "Portugal"};
+
+ static string[] SpainCities = { "Madrid", "Bacerlona", "Valencia" };
+ static string[] GermanyCities = { "Munich", "Berlin" };
+ static string[] ItalyCities = { "Rome", "Milan" };
+ static string[] FranceCities = { "Paris", "Marseille" };
+ static string[] PortugalCities = { "Madeira", "Lisboa", "Porto" };
+
+ static void Main(string[] args)
+ {
+
+
+ if (Login())
+ {
+ Menu();
+ }
+
+
+
+ }
+
+ static void Menu()
+ {
+ int optionChosed;
+
+ Console.Clear();
+ Console.WriteLine("Welcome to RH Hotel Reservations System.");
+ Console.WriteLine("1. Make a Reservation \n2. Exit the System");
+ do
+ {
+ Console.WriteLine("\nPlease, choose an option from the menu...");
+ int.TryParse(Console.ReadLine(), out optionChosed);
+
+ } while (optionChosed <=0 || optionChosed >=3);
+
+ if (optionChosed == exitSystem)
+ {
+ Console.WriteLine("Thanks for using our system.");
+ Console.WriteLine("Closing...");
+ Thread.Sleep(3000);
+ }
+ else if (optionChosed == 1)
+ {
+ Reservation();
+ }
+ }
+
+ static bool Login()
+ {
+ bool grantedAccess = false;
+ int loginAttempts = 0;
+ //string typedUsername, typedPassword;
+
+
+ do
+ {
+ Console.Clear();
+
+ Console.WriteLine(" --- RH HOTELS ---");
+ Console.WriteLine("*** Login ***");
+ Console.Write("Type your username: ");
+ string typedUsername = Console.ReadLine();
+ Console.Write("Type your password: ");
+ string typedPassword = Console.ReadLine();
+
+ if (typedUsername == username)
+ {
+ if (typedPassword == password)
+ {
+
+ Console.WriteLine($"Granted Access. Welcome: {username}. Press any key to continue...");
+ grantedAccess = true;
+ Console.ReadKey();
+ break;
+ }
+ else
+ {
+ loginAttempts++;
+ attempts--;
+ Console.WriteLine($"Wrong Password. Try Again. LOGIN ATTEMPT N°{loginAttempts} - ATTEMPTS LEFT: {attempts}");
+ Console.WriteLine("Press any key to try again...");
+ Console.ReadKey();
+ }
+ }
+ else
+ {
+
+ Console.WriteLine("User typed does not exist. Try again.\nPress any key to continue...");
+ Console.ReadKey();
+
+ }
+
+
+
+ } while (attempts > 0);
+
+
+ if (attempts <= 0)
+ {
+ grantedAccess = false;
+ Console.WriteLine("The system has been blocked due to too many attempts. Try again later...\nPress any key to exit...");
+ Console.ReadKey();
+ Environment.Exit(0);
+ }
+
+
+ return grantedAccess;
+
+ }
+
+ static void Reservation()
+ {
+ string countryChosed, cityChosed;
+
+ int singleRoomsQuantity, doubleRoomsQuantity, groupRoomsQuantity, vipRoomsQuantity, luxuryRoomsQuantity;
+
+
+ Console.Clear();
+ Console.WriteLine(" --- RESERVATION MENU --- ");
+ Console.WriteLine("Please, type the name of the country to select a country from above: ");
+ for (int i = 0; i < countries.Length; i++)
+ {
+ Console.WriteLine($"* {countries[i]}");
+ }
+ countryChosed = Console.ReadLine();
+
+ ShowCities(countryChosed);
+
+ cityChosed = Console.ReadLine();
+
+ Console.WriteLine("ROOMS QUANTITY");
+ Console.Write("Single Rooms Quantity ($100 each Single Room - ENTER 0 TO SKIP/CONTINUE): ");
+ int.TryParse(Console.ReadLine(), out singleRoomsQuantity);
+ Console.Write("Double Rooms Quantity ($200 each Single Room - ENTER 0 TO SKIP/CONTINUE): ");
+ int.TryParse(Console.ReadLine(), out doubleRoomsQuantity);
+ Console.Write("Group Rooms Quantity ($350 each Single Room - ENTER 0 TO SKIP/CONTINUE): ");
+ int.TryParse(Console.ReadLine(), out groupRoomsQuantity);
+ Console.Write("VIP Rooms Quantity ($450 each Single Room - ENTER 0 TO SKIP/CONTINUE): ");
+ int.TryParse(Console.ReadLine(), out vipRoomsQuantity);
+ Console.Write("Luxury Rooms Quantity ($550 each Single Room - ENTER 0 TO SKIP/CONTINUE): ");
+ int.TryParse(Console.ReadLine(), out luxuryRoomsQuantity);
+
+
+ Console.WriteLine("Do you confirm the operation? (y/n):");
+ string confirmation = Console.ReadLine();
+
+ if (confirmation == "n")
+ {
+ Menu();
+ }
+
+ Console.WriteLine("Input your name: ");
+ string name = Console.ReadLine();
+ Console.WriteLine("Input your surname: ");
+ string surname = Console.ReadLine();
+ Console.WriteLine("Input your ID / Passport number: ");
+ string idNumber = Console.ReadLine();
+
+
+ //calculations
+
+ float singleRoomsTotal = singleRoomsQuantity * SingleRoomPrice;
+ float doubleRoomsTotal = doubleRoomsQuantity * DoubleRoomPrice;
+ float groupRoomsTotal = groupRoomsQuantity * GroupRoomPrice;
+ float vipRoomsTotal = vipRoomsQuantity * VipSuitePrice;
+ float luxuryRoomsTotal = luxuryRoomsQuantity * LuxurySuitePrice;
+ float total = singleRoomsTotal + doubleRoomsTotal + groupRoomsTotal + vipRoomsTotal + luxuryRoomsTotal;
+
+ ShowDetails(name, surname, idNumber, singleRoomsQuantity, singleRoomsTotal, doubleRoomsQuantity, doubleRoomsTotal, groupRoomsQuantity, groupRoomsTotal, vipRoomsQuantity, vipRoomsTotal, luxuryRoomsQuantity, luxuryRoomsTotal, total);
+
+ }
+
+ static void ShowCities(string countryParameter)
+ {
+ Console.WriteLine($"\n{countryParameter} cities");
+ Console.WriteLine("**************************");
+
+ switch (countryParameter.ToUpper())
+ {
+ case "SPAIN":
+
+ foreach (var ciudad in SpainCities)
+ {
+ Console.WriteLine($"{0+1}. {ciudad}");
+ }
+
+ break;
+
+ case "FRANCE":
+ foreach (var ciudad in FranceCities)
+ {
+ Console.WriteLine($"{0 + 1}. {ciudad}");
+ }
+ break;
+
+ case "PORTUGAL":
+ foreach (var ciudad in PortugalCities)
+ {
+ Console.WriteLine($"{0 + 1}. {ciudad}");
+ }
+ break;
+
+
+ case "ITALY":
+ foreach (var ciudad in ItalyCities)
+ {
+ Console.WriteLine($"{0 + 1}. {ciudad}");
+ }
+ break;
+
+ case "GERMANY":
+ foreach (var ciudad in GermanyCities)
+ {
+ Console.WriteLine($"{0 + 1}. {ciudad}");
+ }
+ break;
+
+ default:
+ Console.WriteLine("DEFAULT OPTION");
+ break;
+ }
+
+ Console.Write("\nChoose your preferred city: ");
+
+ }
+
+ static void ShowDetails(string nameP, string surnameP, string idP, int singles, float singlesTotal, int doubles, float doublesTotal, int groups, float groupsTotal, int vips, float vipsTotal, int luxurys, float luxurysTotal, float totalP)
+ {
+ Console.Clear();
+
+ Console.WriteLine("Reservation Information");
+ Console.WriteLine("-----------------------");
+ Console.WriteLine($"Name: {nameP}");
+ Console.WriteLine($"Surname: {surnameP}");
+ Console.WriteLine($"Identification Number: {idP}");
+ Console.WriteLine("----------------------------------");
+ Console.WriteLine("Reservation Details");
+ Console.WriteLine("----------------------------------");
+
+ if (singles > 0)
+ {
+ Console.WriteLine($"Single Rooms: {singles}");
+ Console.WriteLine($"Total: {singlesTotal}");
+ }
+
+ if (doubles > 0)
+ {
+ Console.WriteLine($"Double Rooms: {doubles}");
+ Console.WriteLine($"Total: {doublesTotal}");
+ }
+
+ if (groups > 0)
+ {
+ Console.WriteLine($"Group Rooms: {groups}");
+ Console.WriteLine($"Total: {groupsTotal}");
+ }
+
+ if (vips > 0)
+ {
+ Console.WriteLine($"VIP Rooms: {vips}");
+ Console.WriteLine($"Total: {vipsTotal}");
+ }
+
+ if (luxurys > 0)
+ {
+ Console.WriteLine($"Luxury Suites: {luxurys}");
+ Console.WriteLine($"Total: {luxurysTotal}");
+ }
+
+ Console.WriteLine($"Total amount: {totalP}");
+ Console.WriteLine("----------------------------");
+ Console.WriteLine("Press a key to continue...");
+ Console.ReadLine();
+ Menu();
+ }
+
+
+ }
+}
diff --git a/L1E4/Properties/AssemblyInfo.cs b/L1E4/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..9342fa2
--- /dev/null
+++ b/L1E4/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos valores de atributo para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("L1E4")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("L1E4")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde
+// COM, establezca el atributo ComVisible en true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM.
+[assembly: Guid("b54825ed-1fb7-4ebc-ad2e-30c40b2e8739")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de compilación
+// Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión
+// utilizando el carácter "*", como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/L1E4/bin/Debug/L1E4.exe b/L1E4/bin/Debug/L1E4.exe
new file mode 100644
index 0000000..0724c8a
Binary files /dev/null and b/L1E4/bin/Debug/L1E4.exe differ
diff --git a/L1E4/bin/Debug/L1E4.exe.config b/L1E4/bin/Debug/L1E4.exe.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E4/bin/Debug/L1E4.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E4/bin/Debug/L1E4.pdb b/L1E4/bin/Debug/L1E4.pdb
new file mode 100644
index 0000000..e395914
Binary files /dev/null and b/L1E4/bin/Debug/L1E4.pdb differ
diff --git a/L1E4/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/L1E4/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..eba0111
Binary files /dev/null and b/L1E4/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/L1E4/obj/Debug/L1E4.csproj.AssemblyReference.cache b/L1E4/obj/Debug/L1E4.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..0449b99
Binary files /dev/null and b/L1E4/obj/Debug/L1E4.csproj.AssemblyReference.cache differ
diff --git a/L1E4/obj/Debug/L1E4.csproj.CoreCompileInputs.cache b/L1E4/obj/Debug/L1E4.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..036c9ce
--- /dev/null
+++ b/L1E4/obj/Debug/L1E4.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+2f1b5aa9ca9324e732c8dc8ad98b9a6b4836d80a
diff --git a/L1E4/obj/Debug/L1E4.csproj.FileListAbsolute.txt b/L1E4/obj/Debug/L1E4.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..0d5d2a3
--- /dev/null
+++ b/L1E4/obj/Debug/L1E4.csproj.FileListAbsolute.txt
@@ -0,0 +1,8 @@
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\bin\Debug\L1E4.exe.config
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\bin\Debug\L1E4.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\bin\Debug\L1E4.pdb
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\obj\Debug\L1E4.csproj.AssemblyReference.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\obj\Debug\L1E4.csproj.SuggestedBindingRedirects.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\obj\Debug\L1E4.csproj.CoreCompileInputs.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\obj\Debug\L1E4.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E4\obj\Debug\L1E4.pdb
diff --git a/L1E4/obj/Debug/L1E4.csproj.SuggestedBindingRedirects.cache b/L1E4/obj/Debug/L1E4.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/L1E4/obj/Debug/L1E4.exe b/L1E4/obj/Debug/L1E4.exe
new file mode 100644
index 0000000..0724c8a
Binary files /dev/null and b/L1E4/obj/Debug/L1E4.exe differ
diff --git a/L1E4/obj/Debug/L1E4.pdb b/L1E4/obj/Debug/L1E4.pdb
new file mode 100644
index 0000000..e395914
Binary files /dev/null and b/L1E4/obj/Debug/L1E4.pdb differ
diff --git a/L1E5/App.config b/L1E5/App.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E5/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E5/L1E5.csproj b/L1E5/L1E5.csproj
new file mode 100644
index 0000000..5497ba9
--- /dev/null
+++ b/L1E5/L1E5.csproj
@@ -0,0 +1,53 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {468EDBC1-9468-4637-BEC3-C2724F6B41E0}
+ Exe
+ L1E5
+ L1E5
+ v4.8
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E5/L1E5.sln b/L1E5/L1E5.sln
new file mode 100644
index 0000000..0ee1cfc
--- /dev/null
+++ b/L1E5/L1E5.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.6.33723.286
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "L1E5", "L1E5.csproj", "{468EDBC1-9468-4637-BEC3-C2724F6B41E0}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {468EDBC1-9468-4637-BEC3-C2724F6B41E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {468EDBC1-9468-4637-BEC3-C2724F6B41E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {468EDBC1-9468-4637-BEC3-C2724F6B41E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {468EDBC1-9468-4637-BEC3-C2724F6B41E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {98F197BE-D5BE-4D50-BC86-806E0F13317E}
+ EndGlobalSection
+EndGlobal
diff --git a/L1E5/Program.cs b/L1E5/Program.cs
new file mode 100644
index 0000000..894590c
--- /dev/null
+++ b/L1E5/Program.cs
@@ -0,0 +1,325 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Threading;
+using System.Security.Cryptography;
+
+namespace L1E5
+{
+ internal class TravelPlan
+ {
+ public string origin { get; set; }
+ public string destination { get; set; }
+ public string date { get; set; }
+ public int hour { get; set; }
+ public int condition { get; set; }
+ public string meal { get; set; }
+ public bool additionalLuggage { get; set; }
+
+ public TravelPlan(string originCountry, string destinationCountry, string flightDate, int flightHour, int flightCondition, string preferredMeal, bool additionalLuggage)
+ {
+ this.origin = originCountry;
+ this.destination = destinationCountry;
+ this.date = flightDate;
+ this.condition = flightCondition;
+ this.meal = preferredMeal;
+ this.additionalLuggage = additionalLuggage;
+ this.hour = flightHour;
+ }
+
+ }
+
+ internal class Program
+ {
+
+ /*
+ 5.
+
+Turkish Airlines has just launched an offer to travel among the following destinations: Turkey, Greece, Lebanon, Spain, and Portugal.
+
+Develop an algorithm with the following characteristics:
+It must have a login and validate the data; after the third failed attempt, it should be locked.
+
+The user must choose the origin country and the destination country, the flight date, and the condition: Economy or First Class.
+The user can choose their preferred meal: Regular, Vegetarian, Kosher.
+The user must choose if they want to check an additional piece of luggage into the hold.
+Hand luggage is free of charge.
+
+The user must purchase both the outbound and return tickets.
+
+The program must collect the following data: Name, country of origin, passport, and destination country.
+Upon completing the process, the system will display everything the user has previously chosen along with their information.
+The system will provide the option to confirm the reservation or cancel it. If the user chooses YES, a confirmation message will appear. If not, it will return to the main menu.
+
+
+ */
+
+ const string username = "system";
+ const string password = "123";
+ static int attempts = 3;
+
+ static string[] countriesArray = {"Turkey", "Greece", "Lebanon", "Spain", "Portugal"};
+
+
+
+
+ static string userFullName, userOgCountry, userPassport, userDestination, userFlightDate, userPreferredMeal;
+ static int userFlightHour, userCondition, userExtraLuggage;
+ static bool extraLuggage;
+
+ static void Main(string[] args)
+ {
+ if (Login())
+ {
+ Menu();
+ }
+ }
+
+ static bool Login()
+ {
+ bool grantedAccess = false;
+ int logAttempts = 1;
+
+ do
+ {
+ Console.Clear();
+ Console.WriteLine("[--- LOG-IN ---]");
+ Console.Write("Please, type your username: ");
+ string typedUsername = Console.ReadLine();
+ Console.Write("Please, type the password: ");
+ string typedPassword = Console.ReadLine();
+
+ if (typedUsername == username)
+ {
+ if (typedPassword == password)
+ {
+ Console.WriteLine($"Welcome {username}! Press any key to continue to the system...");
+ grantedAccess = true;
+ Console.ReadKey();
+ break;
+ }
+ else
+ {
+ logAttempts++;
+ attempts--;
+ //Se muestra "loginAttempts-1" para no contar el intento que está por realizar.
+ Console.WriteLine($"Invalid! You typed the wrong password. Login Attempt: {logAttempts - 1}, Login Attempts Left: {attempts}");
+ Console.ReadKey();
+ }
+ }
+ else
+ {
+ Console.WriteLine("The username typed does not exist! Try again.");
+ Console.WriteLine("Press any key to continue...");
+ Console.ReadKey();
+
+ }
+
+
+ } while (attempts > 0);
+
+ if (attempts <= 0)
+ {
+ grantedAccess = false;
+ Console.WriteLine("The system has been blocked due to too many attempts. Try again later...\n3 seconds to exit...");
+ Thread.Sleep(3000);
+ }
+
+
+
+
+
+ return grantedAccess;
+ }
+
+ static void Menu()
+ {
+ int menuOption;
+
+ Console.Clear();
+ Console.WriteLine("Welcome to the Turkish Airlines Traveling System * !");
+ Console.WriteLine("What do you want to do?");
+
+ do
+ {
+
+ Console.WriteLine("1. Make a Flight Reservation" + "\n2. Exit the system");
+
+ int.TryParse(Console.ReadLine(), out menuOption);
+
+ if (menuOption == 1)
+ {
+ FlightReservation();
+ }
+ else if (menuOption == 2)
+ {
+ Console.WriteLine("Thanks for using our system! \n3 seconds to exit...");
+ Thread.Sleep(3000);
+ break;
+ }
+ else
+ {
+ Console.WriteLine("Invalid option. Please type a valid option from the menu");
+ }
+
+ } while ((menuOption <= 0) || menuOption >= 3);
+
+
+ }
+
+ static void FlightReservation()
+ {
+ Random random = new Random();
+ float ticketsPrice = random.Next(110, 350);
+ string confirmation;
+
+ Console.Clear();
+ Console.WriteLine(" ---- MAKE A RESERVATION ----");
+
+ Console.WriteLine("AVAILABLE ORIGIN COUNTRIES: ");
+ foreach (var countrie in countriesArray)
+ {
+ Console.WriteLine($"* {countrie}");
+ }
+
+ Console.Write("Please, enter the origin country: ");
+ userOgCountry = Console.ReadLine();
+ do
+ {
+ Console.Write("Now, enter the destination country: ");
+ userDestination = Console.ReadLine();
+
+ if (userDestination == userOgCountry)
+ {
+ Console.WriteLine("You can't pick the same country as the origin and the destination.");
+ Console.WriteLine("Try again typing another country...");
+ }
+ } while (userDestination == userOgCountry);
+
+ Console.Write("Enter the flight date (dd/mm/yy) (EXAMPLE: 11/03/2027): ");
+ userFlightDate = Console.ReadLine();
+
+ do
+ {
+ Console.Write("Enter the flight hour (24h) (EXAMPLE: 1600 = 04:00pm): ");
+ int.TryParse(Console.ReadLine(), out userFlightHour);
+
+ if (userFlightHour <= 0 || userFlightHour > 2400)
+ {
+ Console.WriteLine("INVALID. Please enter a valid hour. Examples: 1600, 0800, 0400...");
+ }
+
+ } while (userFlightHour < 0 || userFlightHour > 2400);
+
+ do
+ {
+ Console.WriteLine("Now, choose a condition (enter the number)" +
+ "\n1. Economy" +
+ "\n2. First Class");
+ int.TryParse(Console.ReadLine(), out userCondition);
+
+ if (userCondition <= 0 || userCondition >= 3)
+ {
+ Console.WriteLine("INVALID. Please enter a valid option between 1 or 2.");
+ }
+
+ } while (userCondition <= 0 || userCondition >= 3);
+
+ Console.Write("Enter now your preferred meal in letters (Regular, Vegetarian, Kosher): ");
+ userPreferredMeal = Console.ReadLine();
+ Console.WriteLine("\nDo you need extra luggage? Is free of charge" +
+ "\n1. Yes " +
+ "\n2. No");
+ int.TryParse(Console.ReadLine(), out userExtraLuggage);
+
+ if (userExtraLuggage == 1)
+ {
+ extraLuggage = true;
+ }
+ else
+ {
+ extraLuggage = false;
+ }
+
+
+
+
+ Console.WriteLine($"With the data received from you, the outbound ticket and the return ticket will cost: {ticketsPrice}");
+
+
+ do
+ {
+ Console.WriteLine("Do you want to confirm the reservation? (y/n)");
+ confirmation = Console.ReadLine();
+ if (confirmation == "n")
+ {
+ Menu();
+ break;
+ }
+ else if (confirmation == "y")
+ {
+ Console.Write("Please enter your full name: ");
+ userFullName = Console.ReadLine();
+ Console.Write("Now, enter your Passport ID: ");
+ userPassport = Console.ReadLine();
+
+ TravelPlan r1 = new TravelPlan(userOgCountry, userDestination, userFlightDate, userFlightHour, userCondition, userPreferredMeal, extraLuggage);
+ ReservationDetails(r1, userFullName, userPassport, ticketsPrice);
+ break;
+ }
+
+ } while (confirmation != "y" || confirmation != "n");
+
+
+
+
+
+
+
+
+
+
+ }
+
+ static void ReservationDetails(TravelPlan reservation, string name, string passport, float totalCost)
+ {
+ Console.Clear();
+ Console.WriteLine(" ---- RESERVATION DETAILS ----");
+ Console.WriteLine($"Username: {username}" +
+ $"\nFull name: {name}" +
+ $"\nPassport ID: {passport}" +
+ $"\nOrigin Country {reservation.origin.ToUpper()}" +
+ $"\nDestination Country {reservation.destination.ToUpper()}" +
+ $"\nFlight Date: {reservation.date}" +
+ $"\nFlight Hour: {reservation.hour}");
+ if (reservation.condition == 1)
+ {
+ Console.WriteLine("Condition: Economy");
+ }
+ else
+ {
+ Console.WriteLine("Condition: First Class");
+ }
+ Console.WriteLine($"Preferred Meal: {reservation.meal}");
+ if (reservation.additionalLuggage == true)
+ {
+ Console.WriteLine("Extra Luggage: YES");
+ }
+ else
+ {
+ Console.WriteLine("Extra Luggage: NO");
+ }
+ Console.WriteLine("------------------");
+ Console.WriteLine($"Total Cost: {totalCost}");
+
+ Console.WriteLine("\nPROCESS COMPLETED... Press any key to continue...");
+ Console.ReadKey();
+ Menu();
+
+
+ }
+
+ }
+}
diff --git a/L1E5/Properties/AssemblyInfo.cs b/L1E5/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..dd3ff2a
--- /dev/null
+++ b/L1E5/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// La información general de un ensamblado se controla mediante el siguiente
+// conjunto de atributos. Cambie estos valores de atributo para modificar la información
+// asociada a un ensamblado.
+[assembly: AssemblyTitle("L1E5")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("L1E5")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Si establece ComVisible en false, los tipos de este ensamblado no estarán visibles
+// para los componentes COM. Si es necesario obtener acceso a un tipo en este ensamblado desde
+// COM, establezca el atributo ComVisible en true en este tipo.
+[assembly: ComVisible(false)]
+
+// El siguiente GUID sirve como id. de typelib si este proyecto se expone a COM.
+[assembly: Guid("468edbc1-9468-4637-bec3-c2724f6b41e0")]
+
+// La información de versión de un ensamblado consta de los cuatro valores siguientes:
+//
+// Versión principal
+// Versión secundaria
+// Número de compilación
+// Revisión
+//
+// Puede especificar todos los valores o usar los valores predeterminados de número de compilación y de revisión
+// utilizando el carácter "*", como se muestra a continuación:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/L1E5/bin/Debug/L1E5.exe b/L1E5/bin/Debug/L1E5.exe
new file mode 100644
index 0000000..50ea3a2
Binary files /dev/null and b/L1E5/bin/Debug/L1E5.exe differ
diff --git a/L1E5/bin/Debug/L1E5.exe.config b/L1E5/bin/Debug/L1E5.exe.config
new file mode 100644
index 0000000..3916e0e
--- /dev/null
+++ b/L1E5/bin/Debug/L1E5.exe.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/L1E5/bin/Debug/L1E5.pdb b/L1E5/bin/Debug/L1E5.pdb
new file mode 100644
index 0000000..79ba19f
Binary files /dev/null and b/L1E5/bin/Debug/L1E5.pdb differ
diff --git a/L1E5/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/L1E5/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..9bcfc52
Binary files /dev/null and b/L1E5/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/L1E5/obj/Debug/L1E5.csproj.AssemblyReference.cache b/L1E5/obj/Debug/L1E5.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..0449b99
Binary files /dev/null and b/L1E5/obj/Debug/L1E5.csproj.AssemblyReference.cache differ
diff --git a/L1E5/obj/Debug/L1E5.csproj.CoreCompileInputs.cache b/L1E5/obj/Debug/L1E5.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..036c9ce
--- /dev/null
+++ b/L1E5/obj/Debug/L1E5.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+2f1b5aa9ca9324e732c8dc8ad98b9a6b4836d80a
diff --git a/L1E5/obj/Debug/L1E5.csproj.FileListAbsolute.txt b/L1E5/obj/Debug/L1E5.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..bf08ee3
--- /dev/null
+++ b/L1E5/obj/Debug/L1E5.csproj.FileListAbsolute.txt
@@ -0,0 +1,8 @@
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\bin\Debug\L1E5.exe.config
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\bin\Debug\L1E5.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\bin\Debug\L1E5.pdb
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\obj\Debug\L1E5.csproj.AssemblyReference.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\obj\Debug\L1E5.csproj.SuggestedBindingRedirects.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\obj\Debug\L1E5.csproj.CoreCompileInputs.cache
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\obj\Debug\L1E5.exe
+C:\Users\Usuario\source\repos\blindma1den-development\L1E5\obj\Debug\L1E5.pdb
diff --git a/L1E5/obj/Debug/L1E5.csproj.SuggestedBindingRedirects.cache b/L1E5/obj/Debug/L1E5.csproj.SuggestedBindingRedirects.cache
new file mode 100644
index 0000000..e69de29
diff --git a/L1E5/obj/Debug/L1E5.exe b/L1E5/obj/Debug/L1E5.exe
new file mode 100644
index 0000000..50ea3a2
Binary files /dev/null and b/L1E5/obj/Debug/L1E5.exe differ
diff --git a/L1E5/obj/Debug/L1E5.pdb b/L1E5/obj/Debug/L1E5.pdb
new file mode 100644
index 0000000..79ba19f
Binary files /dev/null and b/L1E5/obj/Debug/L1E5.pdb differ