You are on page 1of 2

use std::io;

use std::collections::HashMap;

fn main() {
println!("Enter the number of elements in the array:");
let mut input = String::new();

io::stdin()
.read_line(&mut input)
.expect("Failed to read input.");

let num_elements: usize = input.trim().parse().expect("Please enter a valid


number.");
let mut array = Vec::new();

for i in 0..num_elements {
println!("Enter element at index {}:", i);
let mut input = String::new();
io::stdin()
.read_line(&mut input)
.expect("Failed to read input.");
let element: i32 = input.trim().parse().expect("Please enter a valid
number.");
array.push(element);
}
println!(" ");
println!("The entered array is: {:?}", array);

array.sort();
println!("The entered array in ascending order is : {:?}", array);

array.sort_by(|a, b| b.cmp(a));
println!("The entered array in descending order is: {:?}", array);

let mut even_numbers = Vec::new();


let mut odd_numbers = Vec::new();

for &num in &array {


if num % 2 == 0 {
even_numbers.push(num);
} else {
odd_numbers.push(num);
}
}

println!("The even numbers in the array: {:?}", even_numbers);


println!("The odd numbers in the array : {:?}", odd_numbers);

let mean = calculate_mean(&array);


let median = calculate_median(&array);
let mode = calculate_mode(&array);

println!("Mean: {}", mean);


println!("Median: {}", median);
println!("Mode: {}", mode);
}

fn calculate_mean(data: &[i32]) -> f64 {


let sum: i32 = data.iter().sum();
sum as f64 / data.len() as f64
}

fn calculate_median(data: &[i32]) -> f64 {


let mut sorted_data = data.to_vec();
sorted_data.sort();

let mid = data.len() / 2;


if data.len() % 2 == 0 {
(sorted_data[mid - 1] + sorted_data[mid]) as f64 / 2.0
} else {
sorted_data[mid] as f64
}
}

fn calculate_mode(data: &[i32]) -> i32 {


let mut frequency_map = HashMap::new();

for &item in data {


*frequency_map.entry(item).or_insert(0) += 1;
}

let mut mode = None;


let mut max_frequency = 0;

for (value, frequency) in frequency_map {


if frequency > max_frequency {
max_frequency = frequency;
mode = Some(value);
}
}

mode.unwrap()
}

You might also like