Kalkulator w C z obliczaniem z frazy


(fedora24x) #1

Kolejny post z serii :slight_smile: Jak moge napisa膰 kalkulator kt贸ry oblicza z frazy?

#include <stdio.h>
int main(int argc, char *argv[])
{
    char *fraza = "2+2+2-1";

    int oblicz(char *fraza)
    {
        int wynik = *fraza;
        for(;*fraza;)
        {
            if(*fraza == "+")
            {
                wynik = (int)*(--*fraza) + (int)*(*fraza + 2);
                return wynik;
            } else if(*fraza == "-")
            {
                wynik = (int)*(--*fraza) - (int)*(*fraza + 2);
                return wynik;
            }
        }
        return wynik;
    }
    printf("%d\n", wynik);
    return 0;
}

gdzie聽 fraza moze by膰

1+2-3
2*2+2
1+3*2
4/2+1
(2*3)-1
itp.

Znacie jakie艣 materia艂y?


(enedil) #2

http://rosettacode.org/wiki/Tokenize_a_string

I m贸g艂by艣 si臋 nauczy膰 googlowa膰 :?


(Ostaszewianin) #3

Eleganckim rozwi膮zaniem b臋dzie napisanie gramatyki bezkonstekstowej i skonstruowanie na jej podstawie automatu ze stosem :wink:


(kostek135) #4

@OP

Opisa艂em to na blogu, mo偶esz by膰 masochist膮 i przenie艣膰 na C. Np. z u偶yciem YACC czy Bison.

http://www.dobreprogramy.pl/Piszemy-troche-mniej-zlozony-kalkulator,Blog,52021.html