2.cvicenie prefixny tvar
// postfix.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
enum ExpElement {NEG, ADD, SUB, MUL, DIV, VALUE};
// Element vyrazu v prefixnej forme
struct Element {
ExpElement op;
int value; // Ma vyznam len pre operaciu VALUE
};
//prefixny tvar vyrazu -3*(2+4)
Element expr[] = {{MUL,0}, {NEG,0}, {VALUE,3}, {ADD,0}, {VALUE,2}, {VALUE,4}};
int pexp = 0; // Aktualna pozicia vo vyraze
int eval() {
int h1,h2;
switch(expr[pexp].op){
case VALUE:h1=expr[pexp].value;pexp++;return(h1);
break;
case MUL:
pexp++;
h1=eval();
h2=eval();
return (h1*h2);
break;
case NEG:
pexp++;
h1=eval();
return (-h1);
break;
case ADD:
pexp++;
h1=eval();
h2=eval();
return (h1+h2);
break;
/* DOPLNIT vetvy pre ADD,SUB,MUL,DIV,NEG
*/
}
//tu sa nema nikdy dostat
return(0);
}
int main() {
printf("%d\n", eval());
getchar();
}
tak ak by niekto mohol hodit sem veci s prveho a este strom z druheho cvika nech si to pozriem, vdaka