Collections: Add company text interface exercise
This commit is contained in:
parent
fcdcb581dd
commit
ef4d3222fa
1 changed files with 60 additions and 5 deletions
|
|
@ -203,22 +203,24 @@ fn list_of_integers_ex() {
|
||||||
|
|
||||||
println!("{:?}", int_vec);
|
println!("{:?}", int_vec);
|
||||||
|
|
||||||
let median = int_vec.get(int_vec.len()/2).expect("Bad index for median");
|
let median = int_vec
|
||||||
|
.get(int_vec.len() / 2)
|
||||||
|
.expect("Bad index for median");
|
||||||
println!("median: {}", median);
|
println!("median: {}", median);
|
||||||
|
|
||||||
println!("Creating modes...");
|
println!("Creating modes...");
|
||||||
let mut map = HashMap::new();
|
let mut map = HashMap::new();
|
||||||
for i in &int_vec {
|
for i in &int_vec {
|
||||||
let count = map.entry(i).or_insert(0);
|
let count = map.entry(i).or_insert(0);
|
||||||
*count += 1;
|
*count += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut max_mode = (0, 0);
|
let mut max_mode = (0, 0);
|
||||||
for (number, mode) in &map {
|
for (number, mode) in &map {
|
||||||
if max_mode.1 < *mode {
|
if max_mode.1 < *mode {
|
||||||
max_mode.0 = **number;
|
max_mode.0 = **number;
|
||||||
max_mode.1 = *mode;
|
max_mode.1 = *mode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("max_mode: number: {}, mode: {}", max_mode.0, max_mode.1);
|
println!("max_mode: number: {}, mode: {}", max_mode.0, max_mode.1);
|
||||||
|
|
@ -249,6 +251,43 @@ fn pig_latin_ex(text: &str) {
|
||||||
println!("Piglatin text: '{}'", piglatin_text);
|
println!("Piglatin text: '{}'", piglatin_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn company_cli_ex(employee_db: &mut HashMap<String, String>, command: &str) {
|
||||||
|
let mut command_iter = command.split_whitespace();
|
||||||
|
let command_keyword = command_iter.next().expect("Please input a command");
|
||||||
|
|
||||||
|
match command_keyword {
|
||||||
|
"Add" => {
|
||||||
|
let user = command_iter.next().expect("Please input a Name");
|
||||||
|
command_iter.next().expect("Please give a department name");
|
||||||
|
let dep = command_iter.next().expect("Please give a department name");
|
||||||
|
|
||||||
|
// We overwrite any other name that was in here
|
||||||
|
employee_db
|
||||||
|
.entry(user.to_string())
|
||||||
|
.or_insert(dep.to_string());
|
||||||
|
}
|
||||||
|
"List" => {
|
||||||
|
let dep = command_iter
|
||||||
|
.next()
|
||||||
|
.expect("Please input a departmant or All for all departments");
|
||||||
|
|
||||||
|
for (name, department) in employee_db {
|
||||||
|
if department == dep || dep == "All" {
|
||||||
|
println!("Name: {} -> Department: {}", name, department);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"Remove" => {
|
||||||
|
let user = command_iter.next().expect("Please input a Name");
|
||||||
|
|
||||||
|
match employee_db.remove_entry(user) {
|
||||||
|
Some(entry) => println!("Removed user with name {} from dep {}", entry.0, entry.1),
|
||||||
|
None => println!("No user with name: {}", user),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => println!("{} is not a known command", command),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
vector_tests();
|
vector_tests();
|
||||||
|
|
@ -260,4 +299,20 @@ fn main() {
|
||||||
list_of_integers_ex();
|
list_of_integers_ex();
|
||||||
|
|
||||||
pig_latin_ex("first apple");
|
pig_latin_ex("first apple");
|
||||||
|
|
||||||
|
let mut employee_database: HashMap<String, String> = HashMap::new();
|
||||||
|
|
||||||
|
company_cli_ex(&mut employee_database, "Add Sally to Engineering");
|
||||||
|
company_cli_ex(&mut employee_database, "Add Amir to Sales");
|
||||||
|
println!("\nAll users:");
|
||||||
|
company_cli_ex(&mut employee_database, "List All");
|
||||||
|
|
||||||
|
println!("\nAll users from Engineering:");
|
||||||
|
company_cli_ex(&mut employee_database, "List Engineering");
|
||||||
|
|
||||||
|
println!("\nRemove user:");
|
||||||
|
company_cli_ex(&mut employee_database, "Remove Amir");
|
||||||
|
|
||||||
|
println!("\nAll users:");
|
||||||
|
company_cli_ex(&mut employee_database, "List All");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue