Pagini recente » Cod sursa (job #3301088) | Cod sursa (job #1745391) | Cod sursa (job #3251294) | Cod sursa (job #2399327) | Cod sursa (job #2437503)
/*#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
struct lista
{
int value;
lista* next;
};
lista* head = NULL;
bool viz[50001];
void addNode(lista* &head, int val)
{
lista *p = new lista;
p->value = val;
p->next = head;
head = p;
}
void afis()
{
while (head != NULL)
{
fout << head->value << " ";
head = head->next;
}
}
int n, m;
vector <int> G[50001];
void dfs(int nod)
{
viz[nod] = true;
for (unsigned int i = 0; i < G[nod].size(); i++)
{
int vecin = G[nod][i];
if (viz[vecin])
continue;
dfs(vecin);
}
addNode(head, nod);
}
int main()
{
fin >> n >> m;
while (m--)
{
int x, y;
fin >> x >> y;
G[x].push_back(y);
}
for (int i = 1; i <= n; i++)
if (!viz[i])
dfs(i);
afis();
return 0;
}
*/
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int termen(int&);
int expresie(int&);
int factor(int&);
int numar(int&);
int expresie(int &p)
{
int r=termen(p);
while(s[p]=='+' or s[p]=='-')
{
p++;
if(s[p-1]=='+') r+=termen(p);
else r-=termen(p);
}
return r;
}
int termen(int &p)
{
int r=factor(p);
while(s[p]=='/' or s[p]=='*')
{
p++;
if(s[p-1]=='*') r*=factor(p);
else r/=factor(p);
}
return r;
}
int factor(int &p)
{
int r=0;
if(s[p]=='(')
{
p++;
r=expresie(p);
if(s[p]==')') p++;
}
else r=numar(p);
return r;
}
int numar(int &p)
{
int nr=0;
while(s[p]>='0' and s[p]<='9')
{
nr*=10;
nr+=(s[p]-'0');
p++;
}
return nr;
}
int main()
{
fin >> s;
int p=0;
fout << expresie(p);
return 0;
}