Add simple calculator (run using `calc` command)
This commit is contained in:
parent
8c9a80fde2
commit
5f39827937
|
@ -3,18 +3,16 @@ use alloc::string::String;
|
||||||
use alloc::vec::Vec;
|
use alloc::vec::Vec;
|
||||||
use crate::alloc::string::ToString;
|
use crate::alloc::string::ToString;
|
||||||
|
|
||||||
|
use crate::software::calc::calc;
|
||||||
|
|
||||||
|
pub mod calc;
|
||||||
|
|
||||||
pub fn command_func(input_command: String) {
|
pub fn command_func(input_command: String) {
|
||||||
let mut command = String::new();
|
let mut command = String::new();
|
||||||
let mut args = String::new();
|
let mut args_vec: Vec<&str> = input_command.split(" ").collect();
|
||||||
let mut command_vec: Vec<&str> = input_command.split(" ").collect();
|
command = args_vec[0].to_string();
|
||||||
command = command_vec[0].to_string();
|
args_vec.remove(0);
|
||||||
command_vec.remove(0);
|
|
||||||
for i in command_vec {
|
|
||||||
for j in i.chars() {
|
|
||||||
args.push(j);
|
|
||||||
}
|
|
||||||
args.push(' ');
|
|
||||||
}
|
|
||||||
match command.as_str() {
|
match command.as_str() {
|
||||||
"hi" => {
|
"hi" => {
|
||||||
println!("hello command!!!");
|
println!("hello command!!!");
|
||||||
|
@ -23,6 +21,13 @@ pub fn command_func(input_command: String) {
|
||||||
println!("wow!!");
|
println!("wow!!");
|
||||||
}
|
}
|
||||||
"echo" => {
|
"echo" => {
|
||||||
|
let mut args = String::new();
|
||||||
|
for i in args_vec {
|
||||||
|
for j in i.chars() {
|
||||||
|
args.push(j);
|
||||||
|
}
|
||||||
|
args.push(' ');
|
||||||
|
}
|
||||||
println!("{} ", args);
|
println!("{} ", args);
|
||||||
}
|
}
|
||||||
"asciiart" => {
|
"asciiart" => {
|
||||||
|
@ -33,6 +38,9 @@ pub fn command_func(input_command: String) {
|
||||||
println!(" | |__| | | \\ \\| |__| |____) |");
|
println!(" | |__| | | \\ \\| |__| |____) |");
|
||||||
println!(" \\_____|_| \\_\\\\____/|_____/ ");
|
println!(" \\_____|_| \\_\\\\____/|_____/ ");
|
||||||
}
|
}
|
||||||
|
"calc" => {
|
||||||
|
calc(args_vec);
|
||||||
|
}
|
||||||
command => {
|
command => {
|
||||||
println!("{}: command not found", command);
|
println!("{}: command not found", command);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
use alloc::string::String;
|
||||||
|
use alloc::vec::Vec;
|
||||||
|
use crate::println;
|
||||||
|
|
||||||
|
pub fn calc(args: Vec<&str>) {
|
||||||
|
if args.len() < 3 || args.len() > 3 {
|
||||||
|
println!("Not enought or too much arguments");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let arg1: i32 = args[0].parse().unwrap();
|
||||||
|
let arg2: i32 = args[2].parse().unwrap();
|
||||||
|
let operation = args[1];
|
||||||
|
if arg2 == 0 && operation == "/" {
|
||||||
|
println!("Divide by zero");
|
||||||
|
return;
|
||||||
|
} else if arg2 == 0 && operation == "%" {
|
||||||
|
println!("Modulo by zero");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
match args[1] {
|
||||||
|
"+" => {println!("{}", arg1+arg2)},
|
||||||
|
"-" => {println!("{}", arg1-arg2)},
|
||||||
|
"*" => {println!("{}", arg1*arg2)},
|
||||||
|
"/" => {println!("{}", arg1/arg2)},
|
||||||
|
"%" => {println!("{}", arg1%arg2)},
|
||||||
|
arg => {println!("Someting went wrong")},
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue