You've already forked book-exercises
72 lines
1.7 KiB
Rust
72 lines
1.7 KiB
Rust
// fn main() {
|
|
// print_labelled_measurements(5, 'h');
|
|
// }
|
|
//
|
|
// fn print_labelled_measurements(value: i32, unit_label: char) {
|
|
// println!("The measurement is: {value}{unit_label}");
|
|
// }
|
|
//
|
|
// // a variable
|
|
//
|
|
use std::io::{self};
|
|
|
|
fn main() {
|
|
println!(
|
|
"welcome to our rudimentary calculator!\nwe can do two things:\n1.factorial.2.square\nwhich one do you want?\n\t"
|
|
);
|
|
loop {
|
|
let mut input = String::new();
|
|
|
|
io::stdin()
|
|
.read_line(&mut input)
|
|
.expect("couldn't read line!");
|
|
|
|
let input: i32 = input.trim().parse().expect("numbers only");
|
|
|
|
if input > 2 || input < 0 {
|
|
println!("aye choose from the options foo");
|
|
break;
|
|
}
|
|
|
|
println!("\nalright and what number to operate on?\n\t");
|
|
|
|
let mut number = String::new();
|
|
|
|
io::stdin()
|
|
.read_line(&mut number)
|
|
.expect("couldn't read line!");
|
|
|
|
let number: i32 = number
|
|
.trim()
|
|
.parse()
|
|
.expect("aye foo enter a numberrr quit playin");
|
|
|
|
if input == 1 {
|
|
println!("\nthe factorial of {number} is {}", factorial(number));
|
|
break;
|
|
} else {
|
|
println!("\nthe square of {number} is {}", square(number));
|
|
break;
|
|
}
|
|
}
|
|
|
|
fn square(x: i32) -> i32 {
|
|
return x * x;
|
|
}
|
|
|
|
//TODO: fix factorial function after you figure out loops
|
|
//NOTE: we have implemented factorial in the the loops sub-directory
|
|
fn factorial(x: i32) -> i32 {
|
|
let mut rev = x - 1;
|
|
let mut result = x;
|
|
loop {
|
|
result *= rev;
|
|
rev -= 1;
|
|
|
|
if rev < 3 {
|
|
break result * 2;
|
|
}
|
|
}
|
|
}
|
|
}
|