From 3c751c6a2fcca8f0be4effbd1e03beb7e14876df Mon Sep 17 00:00:00 2001 From: ipvg Date: Fri, 26 Jul 2024 21:17:57 -0400 Subject: [PATCH] end 019 - pend: validate specie --- .../019_csharp.md | 6 +- .../ChallengeProject/Own/Program.cs | 137 +++++++++++++----- README.md | 2 + 3 files changed, 108 insertions(+), 37 deletions(-) diff --git a/019_branching_and_looping_structures/019_csharp.md b/019_branching_and_looping_structures/019_csharp.md index 142b534..c1c285b 100644 --- a/019_branching_and_looping_structures/019_csharp.md +++ b/019_branching_and_looping_structures/019_csharp.md @@ -9,9 +9,9 @@ iteration statements to achieve app specifications. In this module, you'll demonstrate your ability to: -- Use Visual Studio Code to develop a C# console application that uses a -combination of selection and iteration statements to implement logical -workflows in accordance with supplied application data and user interactions. +- Develop a C# console application that uses a combination of selection and +iteration statements to implement logical workflows in accordance with supplied +application data and user interactions. - Evaluate the underlying conditions and make an informed decision when choosing between if-elseif-else and switch statements, and between foreach, for, while, and do iteration statements. diff --git a/019_branching_and_looping_structures/ChallengeProject/Own/Program.cs b/019_branching_and_looping_structures/ChallengeProject/Own/Program.cs index c5f3fd7..9aa4447 100644 --- a/019_branching_and_looping_structures/ChallengeProject/Own/Program.cs +++ b/019_branching_and_looping_structures/ChallengeProject/Own/Program.cs @@ -1,9 +1,11 @@ int max_pets = 8; bool exit = false; string? selection; -string separator = "+-------------------------------------" + +const string WIP = "Under Construction - please check " + + "back next month to see progress."; +const string separator = "+-------------------------------------" + "--------------------------------------+"; -string main_menu = @" +const string main_menu = @" 1. List all of our current pet information. 2. Assign values to the ourAnimals array fields. 3. Ensure animal ages and physical descriptions are complete. @@ -16,9 +18,9 @@ string main_menu = @" Enter menu item selection or type 'Exit' to exit the program "; string[] description = { - "big sized female golden colored weighing about 20 pounds. housebroken.", - "large dark-brown male siver back weighing about 15 pounds. housebroken.", - "small white female weighing about 8 pounds. translucid at sun.", + "big sized female golden colored weighing 20 pounds. housebroken.", + "large dark-brown male siver back weighing 15 pounds. housebroken.", + "small white female weighing about 8 pounds. translucid.", "medium size male. fluorescent at night.", }; string[] personality = { @@ -29,7 +31,7 @@ string[] personality = { }; string[] options = { "1", "2", "3", "4", "5", "6", "7", "8", "exit" }; string[] nickname = { "lola", "loki", "fuzz", "boby", "gogo", "besti" }; -string[] species = { "cat", "dog", "bee", "pig" }; +string[] species = { "cat", "dog", "bee", "pig", "fly", "rat", "bat" }; string[] abcd = { "a", "b", "c", "d" }; int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 }; string[,] our_animals = new string[max_pets, 6]; @@ -55,25 +57,32 @@ int rand_int(int[] choices) { return choices[indx]; } -void populate_animals_array() { +string get_uniq_id(string[,] animals) { for (int i = 0; i < max_pets - 4; i++) { bool uniq_id = false; - our_animals[i, 0] = rand_str(species); while (!uniq_id) { bool check = true; string id = $"{rand_str(abcd)}{rand_int(nums)}"; for (int j = 0; j < max_pets - 4; j++) { - if (!string.IsNullOrEmpty(our_animals[j, 1]) && our_animals[j, 1] == id) { + if (!string.IsNullOrEmpty(animals[j, 1]) && animals[j, 1] == id) { uniq_id = false; check = false; break; } } if (check) { - our_animals[i, 1] = id; uniq_id = true; + return id; } } + } + return "?"; +} + +void populate_animals_array() { + for (int i = 0; i < max_pets - 4; i++) { + our_animals[i, 0] = rand_str(species); + our_animals[i, 1] = get_uniq_id(our_animals); our_animals[i, 2] = rand_str(description); our_animals[i, 3] = $"{rand_int(nums)}"; our_animals[i, 4] = rand_str(personality); @@ -81,8 +90,8 @@ void populate_animals_array() { } } -void press_enter() { - print("\n\tPress 'Enter' to continue", false); +void press_enter(string msg = "\n\tPress 'Enter' to continue") { + print(msg, false); Console.ReadLine(); } @@ -96,6 +105,7 @@ void print_pets(string[,] animals) { } print_pet(animal); } + press_enter(); } void print_pet(string[] pet) { @@ -136,7 +146,6 @@ string get_input(string text = "Please enter your text: ", bool integer = false) string resp = usr_in.Trim(); int temp_int; if (int.TryParse(resp, out temp_int)) { - print($"Opción 1: {temp_int}"); return resp; } } else { @@ -144,7 +153,7 @@ string get_input(string text = "Please enter your text: ", bool integer = false) } } } - return ""; + return "?"; } void add_new_pet(string[,] animals, int slots) { @@ -155,8 +164,6 @@ void add_new_pet(string[,] animals, int slots) { int age = Int32.Parse(get_input("Enter pet age (-1 if unknown): ", true)); string desc = get_input("Enter the physical description (? if unknown): "); string perso = get_input("Enter pet personality (? if unknown): "); - //print($"Will be added at index: {at_indx}"); - //print($"{id}\n{specie}\n{name}\n{age}\n{desc}\n{perso}"); animals[at_indx, 0] = specie; animals[at_indx, 1] = id; animals[at_indx, 2] = desc; @@ -200,19 +207,87 @@ void ask_new_pet() { } while (another && slots > 0); if (slots == 0) { print("We have reached our limit on the number of pets that we can manage."); - press_enter(); } - press_enter(); - } else { - press_enter(); } + press_enter(); } -void check_age_and_desc() { - int pet_count = max_pets - (availability(our_animals)); +void check_age_and_desc(string[,] animals) { + clear(); + print("\nEnsure animal ages and physical descriptions are complete"); + int pet_count = max_pets - (availability(animals)); + for (int j = 0; j < pet_count; j++) { + if (animals[j, 3] == "-1") { + print("\n"+separator); + string[] animal = { + animals[j,0], animals[j,1], animals[j,2], + animals[j,3], animals[j,4], animals[j,5] + }; + print_pet(animal); + int age = Int32.Parse( + get_input( + $"Enter an age for ID: {animals[j,1]}" + + " (-1 if unknown): ", true + ) + ); + animals[j, 3] = age.ToString(); + } + if (animals[j, 2] == "?") { + print("\n"+separator); + string[] animal = { + animals[j,0], animals[j,1], animals[j,2], + animals[j,3], animals[j,4], animals[j,5] + }; + print_pet(animal); + string desc = get_input( + $"Enter a physical description for ID: {animals[j,1]}" + + " (? if unknown): " + ); + animals[j, 2] = desc; + } + } + press_enter(); } +void check_nick_and_perso(string[,] animals) { + clear(); + print("Ensure animal nicknames and personality descriptions are complete"); + print(separator); + int pet_count = max_pets - (availability(animals)); + for (int j = 0; j < pet_count; j++) { + if (animals[j, 5] == "?") { + print("\n"+separator); + string[] animal = { + animals[j,0], animals[j,1], animals[j,2], + animals[j,3], animals[j,4], animals[j,5] + }; + print_pet(animal); + string nick = get_input( + $"Enter a nickname for ID: {animals[j,1]}" + + "(? if unknown): " + ); + animals[j, 5] = nick; + } + if (animals[j, 4] == "?") { + print("\n"+separator); + string[] animal = { + animals[j,0], animals[j,1], animals[j,2], + animals[j,3], animals[j,4], animals[j,5] + }; + print_pet(animal); + string perso = get_input( + $"Enter a personality description for ID: {animals[j,1]}" + + "(? if unknown): " + ); + animals[j, 4] = perso; + } + } + press_enter(); +} + + populate_animals_array(); + while (!exit) { clear(); print(main_menu); @@ -222,40 +297,34 @@ while (!exit) { switch (selection) { case "1": print_pets(our_animals); - press_enter(); break; case "2": ask_new_pet(); break; case "3": - clear(); - print("Ensure animal ages and physical descriptions are complete"); - check_age_and_desc(); - press_enter(); + check_age_and_desc(our_animals); break; case "4": - clear(); - print("Ensure animal nicknames and personality descriptions are complete"); - press_enter(); + check_nick_and_perso(our_animals); break; case "5": clear(); - print("Edit an animal's age"); + print(WIP); press_enter(); break; case "6": clear(); - print("Edit an animal's personality description"); + print(WIP); press_enter(); break; case "7": clear(); - print("Display all cats with a specified characteristic"); + print(WIP); press_enter(); break; case "8": clear(); - print("Display all dogs with a specified characteristic"); + print(WIP); press_enter(); break; case "exit": diff --git a/README.md b/README.md index 2d6386f..d62463c 100644 --- a/README.md +++ b/README.md @@ -22,3 +22,5 @@ Following - [switch case construct](./015_switch_case/015_csharp.md) - [FizzBuzz Challenge](./016_Iterate_using_for_statement/016_csharp.md) - [Looping logic using the do-while and while](./017_Looping_logic_using_do-while_and_while/017_csharp.md) +- [Conditional branching and looping](./018_Conditional_branching_and_looping/018_csharp.md) +- [Branching and looping structures](./019_branching_and_looping_structures/019_csharp.md)