Skip to content

Instantly share code, notes, and snippets.

@adityasuseno
Created June 30, 2023 15:15
Show Gist options
  • Save adityasuseno/1fcb412ba2cb5cf835582fb2b8a404fa to your computer and use it in GitHub Desktop.
Save adityasuseno/1fcb412ba2cb5cf835582fb2b8a404fa to your computer and use it in GitHub Desktop.
Kalkulator sederhana berbasis command line interface untuk menghitung profit OTC yang biasa kami sering lakukan
use std::io;
fn program() {
let mut harga;
loop {
println!("Masukan harga aset dalam Rupiah : ");
harga = String::new();
io::stdin()
.read_line(&mut harga)
.expect("Failed to read line");
let harga: f32 = match harga.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if harga < 0.0 {
println!("Harga Tidak Boleh Negatif!");
continue;
}
break;
}
let mut margin_in_percent;
loop {
println!("Masukan Margin keuntungan yang diinginkan dalam persen : ");
margin_in_percent = String::new();
io::stdin()
.read_line(&mut margin_in_percent)
.expect("Failed to read line");
let margin_in_percent: f32 = match margin_in_percent.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if margin_in_percent < 0.0 {
println!("Harga Tidak Boleh Negatif!");
continue;
}
break;
}
let harga: f32 = match harga.trim().parse() {
Ok(num) => num,
Err(_) => panic!("Error!"),
};
let margin_in_percent: f32 = match margin_in_percent.trim().parse() {
Ok(num) => num,
Err(_) => panic!("Error!"),
};
let margin: f32 = margin_in_percent / 100.0;
loop {
println!("1️⃣️ Client memberi kita XXX aset kripto dan kita memberi client Rupiah (Aset Kripto → IDR)");
println!("2️⃣️ Client memberi kita aset kripto dan kita memberi client XXX Rupiah (Aset Kripto → IDR)");
println!("3️⃣️ Client memberi kita XXX Rupiah dan kita memberi client aset kripto (IDR → Aset Kripto)");
println!("4️⃣️ Client memberi kita Rupiah dan kita memberi client XXX aset kripto (IDR → Aset Kripto)");
println!("Silahkan Masukan Pilihan (Angka 1, 2, 3, atau 4) : ");
let mut pilihan = String::new();
io::stdin()
.read_line(&mut pilihan)
.expect("Failed to read line");
let pilihan: u8 = match pilihan.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if pilihan == 1 {
println!("Client memberi kita XXX aset kripto dan kita memberi client Rupiah (Aset Kripto → IDR)");
loop {
println!("Masukan Nilai XXX");
let mut kripto = String::new();
io::stdin()
.read_line(&mut kripto)
.expect("Failed to read line");
let kripto: f32 = match kripto.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if kripto > 0.0 {
let rupiah: f32 = harga * kripto * (1.000000000 - margin);
println!("Client memberi kita {} Aset Kripto", kripto);
println!("Kita beri ke Client {} Rupiah", rupiah);
break;
}
else {
println!("Harus Lebih Besar Dari Nol!")
}
}
break;
}
else if pilihan == 2 {
println!("Client memberi kita aset kripto dan kita memberi client XXX Rupiah (Aset Kripto → IDR)");
loop {
println!("Masukan Nilai XXX");
let mut rupiah = String::new();
io::stdin()
.read_line(&mut rupiah)
.expect("Failed to read line");
let rupiah: f32 = match rupiah.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if rupiah > 0.0 {
let kripto: f32 = rupiah / ( harga * (1.000000000 - margin ) );
println!("Client memberi kita {} Aset Kripto", kripto);
println!("Kita beri ke Client {} Rupiah", rupiah);
break;
}
else {
println!("Harus Lebih Besar Dari Nol!")
}
}
break;
}
else if pilihan == 3 {
println!("Client memberi kita XXX Rupiah dan kita memberi client aset kripto (IDR → Aset Kripto)");
loop {
println!("Masukan Nilai XXX");
let mut rupiah = String::new();
io::stdin()
.read_line(&mut rupiah)
.expect("Failed to read line");
let rupiah: f32 = match rupiah.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if rupiah > 0.0 {
let kripto: f32 = rupiah / ( harga * (1.000000000 + margin ) );
println!("Client memberi kita {} Rupiah", rupiah);
println!("Kita beri ke Client {} Aset Kripto", kripto);
break;
}
else {
println!("Harus Lebih Besar Dari Nol!")
}
}
break;
}
else if pilihan == 4 {
println!("Client memberi kita Rupiah dan kita memberi client XXX aset kripto (IDR → Aset Kripto)");
loop {
println!("Masukan Nilai XXX");
let mut kripto = String::new();
io::stdin()
.read_line(&mut kripto)
.expect("Failed to read line");
let kripto: f32 = match kripto.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
if kripto > 0.0 {
let rupiah: f32 = harga * kripto * (1.000000000 + margin);
println!("Client memberi kita {} Rupiah", rupiah);
println!("Kita beri ke Client {} Aset Kripto", kripto);
break;
}
else {
println!("Harus Lebih Besar Dari Nol!");
}
}
break;
}
else {
println!("Harap Masukan Hanya Angka 1, 2, 3, atau 4 saja!");
continue;
}
}
}
fn main() {
program();
loop {
println!("Hitung Lagi? (Y/N)");
let mut jawaban = String::new();
io::stdin()
.read_line(&mut jawaban)
.expect("Failed to read line");
let jawaban: char = match jawaban.trim().parse() {
Ok(char) => char,
Err(_) => continue,
};
if jawaban == 'Y' || jawaban == 'y' {
program();
}
else if jawaban == 'N' || jawaban == 'n' {
break;
}
else {
continue;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment