end 019 - pend: validate specie

This commit is contained in:
ipvg 2024-07-26 21:17:57 -04:00
parent 0a1b0dc467
commit 3c751c6a2f
3 changed files with 108 additions and 37 deletions

View File

@ -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.

View File

@ -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":

View File

@ -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)