You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Chris ec8b2a8aa9 first pass exam 1 for rust 4 years ago
..
README.md first pass exam 1 for rust 4 years ago

README.md

rpn

Instructions

Write a program which takes a string which contains an equation written in Reverse Polish Notation (RPN) as its first argument, which evaluates the equation, and which prints the result on the standard output followed by a newline ('\n').

Reverse Polish Notation is a mathematical notation in which every operator follows all of its operands. In RPN, every operator encountered evaluates the previous 2 operands, and the result of this operation then becomes the first of the two operands for the subsequent operator. Operands and operators must be spaced by at least one space.

The following operators must be implemented : +, -, *, /, and %.

If the string is not valid or if there is not exactly one argument, Error must be printed on the standard output followed by a newline. If the string has extra spaces it is still considered valid.

All the given operands must fit in a i64.

Examples of formulas converted in RPN:

3 + 4 >> 3 4 +

((1 * 2) * 3) - 4 >> 1 2 * 3 * 4 - or 3 1 2 * * 4 -

50 * (5 - (10 / 9)) >> 5 10 9 / - 50 *

Here is how to evaluate a formula in RPN:

1 2 * 3 * 4 -
2 3 * 4 -
6 4 -
2

Or:

3 1 2 * * 4 -
3 2 * 4 -
6 4 -
2

For receiving arguments from the command line you should use something like:

    fn main() {
        let args: Vec<String> = std::env::args().collect();

        rpn(&args[1]);
    }

Usage

$ cargo run "1 2 * 3 * 4 +"
10
$ cargo run "1 2 3 4 +"
Error
$ cargo run
Error
$ cargo run "     1      3 * 2 -"
1
$ cargo run "     1      3 * ksd 2 -"
Error
```