diff options
| author | Andrew Guschin <guschin.drew@gmail.com> | 2023-02-16 21:43:45 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin.drew@gmail.com> | 2023-02-16 21:43:45 +0400 |
| commit | ad8ba9184d4c3b6eff9d251a8677853075975fce (patch) | |
| tree | d75028f9033cd9434abd5211c886c2b8d6cf7f65 /sem2/src/main.rs | |
| parent | b57d081d9bcbe15870ba6d9cf98bb38f188e63ee (diff) | |
Добавлена поддержка недесятичных систем счисления и обработка ошибок
Diffstat (limited to 'sem2/src/main.rs')
| -rw-r--r-- | sem2/src/main.rs | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/sem2/src/main.rs b/sem2/src/main.rs index f60350d..ed33b43 100644 --- a/sem2/src/main.rs +++ b/sem2/src/main.rs @@ -2,10 +2,42 @@ use inquire::Text; mod mpn; fn main() { - let a = Text::new("Введите число:").prompt().unwrap(); - let a = mpn::Number::parse(&a).unwrap(); - let b = Text::new("Введите число:").prompt().unwrap(); - let b = mpn::Number::parse(&b).unwrap(); - let c = a + b; - println!("Number: {}", c); + let radix = match Text::new("Введите основание системы счисления:").prompt() + { + Ok(text) => text, + Err(_) => return, + }; + let radix = match radix.parse::<usize>() { + Ok(number) => number, + Err(_) => { + println!("Основание должно быть десятичным числом"); + return; + } + }; + + let a = match Text::new("Введите число:").prompt() { + Ok(text) => text, + Err(_) => return, + }; + let a = match mpn::Number::parse(&a, radix) { + Ok(number) => number, + Err(what) => { + println!("{what}"); + return; + } + }; + + let b = match Text::new("Введите число:").prompt() { + Ok(text) => text, + Err(_) => return, + }; + let b = match mpn::Number::parse(&b, radix) { + Ok(number) => number, + Err(what) => { + println!("{what}"); + return; + } + }; + + println!("Сумма: {}", a + b); } |