Cod sursa(job #1860774)

Utilizator rangalIstrate Sebastian rangal Data 28 ianuarie 2017 13:00:09
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>
#include <cstring>
#define in "evaluare1.in"
#define out "evaluare1.out"
#define N 103

using namespace std;

ifstream fin(in);
ofstream fout(out);

typedef long long eent;

char c[N];
int n,i,j;
enum ordine{nimic,sum,imp,rid};
int EF = nimic;

inline eent expresie()
{
    eent A;
    i = j;


}

inline eent numar()
{
    eent A;
    i = j;
    //while(strchr("!0123456789",c[j]))
}

inline eent rid_log(eent A,eent B)
{
    if(B < 2) return A;
    else
    {
        eent pw = rid_log(A,B/2);
        if(B%2 == 0) return pw*pw;
        return pw*pw*A;
    }
}

int main()
{
    fin.getline(c,N);
    n = strlen(c);

    eent A,B;

    if(c[j] == '(')
        ++j, A = expresie();
    else A = numar();

    i = j = 0;

    while(j<n)
    {
        if(c[j] == '+') EF = sum;
            else if(c[j] == '/') EF = imp;
                else EF = rid;

        if(c[j] == '(')
            ++j, B = expresie();
        else B = numar();

        if(EF !=nimic)
            if(EF == sum) A = A+B;
            else if(EF == imp) A = A/B;
            else A = rid_log(A,B);

    }

    fin.close(); fout.close();
    return 0;
}