Created
June 30, 2023 15:15
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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