728x90
728x170
■ 역 폴란드 표기법(RPN ; Reverse Polish Notation)의 수식을 계산하는 방법을 보여준다.
▶ 예제 코드 (RS)
use std::io;
use std::str;
fn main()
{
let mut vector : Vec<f64> = vec![];
println!("역 폴란드 표기법으로 수식을 입력해 주시기 바랍니다 : ");
let mut input_string : String = String::new();
io::stdin().read_line(&mut input_string).expect("입력 문자열에서 에러가 발생했습니다.");
let token_split_whitespace : str::SplitWhitespace = input_string.split_whitespace();
for token in token_split_whitespace
{
let token_trimmed : &str = token.trim();
match token_trimmed.parse::<f64>()
{
Ok(value) =>
{
vector.push(value);
continue;
},
Err(_) => 0.0,
};
let value2 : f64 = vector.pop().unwrap();
let value1 : f64 = vector.pop().unwrap();
match token_trimmed
{
"+" => vector.push(value1 + value2),
"-" => vector.push(value1 - value2),
"*" => vector.push(value1 * value2),
"/" => vector.push(value1 / value2),
_ => panic!("계산 불가 연산자 : {}", token_trimmed)
}
}
println!("{}", vector.pop().unwrap());
}
728x90
그리드형(광고전용)
'Rust > Common' 카테고리의 다른 글
[RUST/COMMON] spawn 함수 : 쓰레드 생성하기 (0) | 2023.06.03 |
---|---|
[RUST/COMMON] Chars 구조체 : next 메소드를 사용해 다음 문자 구하기 (0) | 2023.06.01 |
[RUST/COMMON] String 구조체 : chars 메소드를 사용해 반복자 구하기 (0) | 2023.06.01 |
[RUST/COMMON] 크레이트 설치 : hound (0) | 2023.05.30 |
[RUST/COMMON] String 구조체 : split_whitespace 메소드를 사용해 공백 문자 기준 문자열 분리하기 (0) | 2023.05.26 |
[RUST/COMMON] 절대/상대 경로를 사용해 모듈 지정하기 (0) | 2023.05.24 |
[RUST/COMMON] 모듈을 파일로 분리해서 사용하기 (0) | 2023.05.24 |
[RUST/COMMON] super 키워드 : 상위 모듈 참조하기 (0) | 2023.05.24 |
[RUST/COMMON] 단일 파일에서 다수 모듈 사용하기 (0) | 2023.05.24 |
[RUST/COMMON] 선형 합동법 알고리즘을 사용해 난수 생성하기 (0) | 2023.05.24 |