diff options
Diffstat (limited to 'mathsssss/src')
-rw-r--r-- | mathsssss/src/main.rs | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/mathsssss/src/main.rs b/mathsssss/src/main.rs deleted file mode 100644 index 991590b..0000000 --- a/mathsssss/src/main.rs +++ /dev/null @@ -1,61 +0,0 @@ -use std::env; -use std::collections::HashMap; - -fn calc_mean(numbers: &Vec<i32>) -> f32 { - let sum: i32 = numbers.iter().sum(); - sum as f32 / numbers.len() as f32 -} - -fn calc_median(numbers: &Vec<i32>) -> i32 { - numbers[numbers.len() / 2] -} - -fn calc_mode(numbers: &Vec<i32>) -> i32 { - let mut counts: HashMap<i32, i32> = HashMap::new(); - - for each in numbers { - let count = counts.entry(*each).or_insert(0); - *count += 1; - } - - let mut most: i32 = 0; - let mut result: i32 = 0; - - for (key, val) in counts.iter() { - - if val > &most { - most = *val; - result = *key; - } - } - - if most <= 1 { - 0 - } - else { - result - } - -} - -fn main() { - // grab numbers - let mut numbers: Vec<i32> = Vec::new(); - - for arg in env::args().skip(1) { - let number: i32 = arg.trim().parse() - .expect("error: could not parse arg"); - numbers.push(number); - } - - // sort list (mostly for median) - numbers.sort_by(|a, b| a.partial_cmp(b).unwrap()); - - // calculate and print results - let mean: f32 = calc_mean(&numbers); - println!("mean: {}", mean); - let median: i32 = calc_median(&numbers); - println!("median: {}", median); - let mode: i32 = calc_mode(&numbers); - println!("mode: {}", mode); -} |