Advertisement
Guest User

Mean, Median, Mode

a guest
Jul 14th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.52 KB | None | 0 0
  1. use std::env;
  2. use std::collections::HashMap;
  3.  
  4.  
  5. fn main() {
  6.     // Numbers to place in the vector will be passed
  7.     // in via command line arguments.
  8.     let args: Vec<String> = env::args().collect();
  9.    
  10.     let mut numbers: Vec<i32> = Vec::new();
  11.  
  12.     // Parse out the valid integers sent in via the command line.
  13.     // Excludes the first argument (0) because that's just the name
  14.     // of the program.
  15.     for string in &args[1..] {
  16.         match string.trim().parse::<i32>() {
  17.             Ok(value) => numbers.push(value),
  18.             Err(_) => {},
  19.         }
  20.     }
  21.  
  22.     // Enforce a sorted vector.
  23.     numbers.sort();
  24.  
  25.     println!("Mean: {}", mean(&numbers));
  26.     println!("Median: {}", median(&numbers));
  27.     println!("Mode: {}", mode(&numbers));
  28.  
  29.     println!("{:?}", numbers);
  30. }
  31.  
  32. fn mean(numbers: &Vec<i32>) -> i32 {
  33.     if numbers.len() == 0 {
  34.         return 0
  35.     }
  36.  
  37.     let mut sum = 0;
  38.     for &number in numbers {
  39.         sum += number;
  40.     }
  41.  
  42.     sum / numbers.len() as i32
  43. }
  44.  
  45. fn median(numbers: &Vec<i32>) -> i32 {
  46.     numbers[numbers.len() / 2]
  47. }
  48.  
  49. fn mode(integers: &Vec<i32>) -> i32 {
  50.     let mut numbers = HashMap::new();
  51.  
  52.     for integer in integers {
  53.         let count = numbers.entry(integer).or_insert(0);
  54.         *count += 1;
  55.     }
  56.  
  57.     let mut mode = 0;
  58.     let mut most_occurrences = 0;
  59.     for (number, quantity) in numbers {
  60.         if quantity > most_occurrences {
  61.             most_occurrences = quantity;
  62.             mode = *number;
  63.         }
  64.     }
  65.  
  66.     mode
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement