Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. // Enter your code here
  2. use std::collections::HashMap;
  3.  
  4. fn main() {
  5. /*Leemos los dos ingresos de datos*/
  6. let _n = "6";
  7.  
  8. let vector = "1 2 3 4 5 6";
  9.  
  10. //Convertimos en u32
  11.  
  12. //Convertimos en un vector u32
  13. let mut vector: Vec<i32> = vector
  14. .split_whitespace()
  15. .map(|s| s.parse().unwrap())
  16. .collect();
  17.  
  18. // Obtenemos la media
  19. println!("{}", media(&vector));
  20. // obtenemos la mediana
  21. println!("{}", mediana(&mut vector));
  22. // obtenemos la moda
  23. println!("{}", moda(&vector));
  24. }
  25.  
  26. fn media(vector: &[i32]) -> f32 {
  27. let suma: i32 = vector.iter().sum();
  28. suma as f32 / vector.len() as f32
  29. }
  30.  
  31. fn mediana(vector: &mut [i32]) -> f32 {
  32. vector.sort();
  33. let mitad = vector.len() / 2;
  34. let residuo = vector.len() % 2;
  35. if residuo == 0 {
  36. media(&vector[((mitad - 1)..=mitad)])
  37. } else {
  38. vector[mitad] as f32
  39. }
  40. }
  41.  
  42. fn moda(vector: &[i32]) -> i32 {
  43. let mut repeticiones = HashMap::new();
  44. for &valor in vector {
  45. *repeticiones.entry(valor).or_insert(0) += 1;
  46. }
  47. repeticiones
  48. .into_iter()
  49. .max_by_key(|&(_, count)| count)
  50. .map(|(val, _)| val)
  51. .expect("No se puede obtener moda de numeros cero");
  52. println!("{}", repeticiones);
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement