tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,63 @@
|
|||
use IO;
|
||||
use Struct;
|
||||
|
||||
bundle Default {
|
||||
class RpnCalc {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
Caculate("3 4 2 * 1 5 - 2 3 ^ ^ / +");
|
||||
}
|
||||
|
||||
function : native : Caculate(rpn : String) ~ Nil {
|
||||
rpn->PrintLine();
|
||||
|
||||
tokens := rpn->Split(" ");
|
||||
stack := FloatVector->New();
|
||||
each(i : tokens) {
|
||||
token := tokens[i]->Trim();
|
||||
if(token->Size() > 0) {
|
||||
if(token->Get(0)->IsDigit()) {
|
||||
stack->AddBack(token->ToFloat());
|
||||
}
|
||||
else {
|
||||
right := stack->Get(stack->Size() - 1); stack->RemoveBack();
|
||||
left := stack->Get(stack->Size() - 1); stack->RemoveBack();
|
||||
select(token->Get(0)) {
|
||||
label '+': {
|
||||
stack->AddBack(left + right);
|
||||
}
|
||||
|
||||
label '-': {
|
||||
stack->AddBack(left - right);
|
||||
}
|
||||
|
||||
label '*': {
|
||||
stack->AddBack(left * right);
|
||||
}
|
||||
|
||||
label '/': {
|
||||
stack->AddBack(left / right);
|
||||
}
|
||||
|
||||
label '^': {
|
||||
stack->AddBack(right->Power(left));
|
||||
}
|
||||
};
|
||||
};
|
||||
PrintStack(stack);
|
||||
};
|
||||
};
|
||||
Console->Print("result: ")->PrintLine(stack->Get(0));
|
||||
}
|
||||
|
||||
function : PrintStack(stack : FloatVector) ~ Nil {
|
||||
" ["->Print();
|
||||
each(i : stack) {
|
||||
stack->Get(i)->Print();
|
||||
if(i + 1< stack->Size()) {
|
||||
", "->Print();
|
||||
};
|
||||
};
|
||||
']'->PrintLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue