Pagini recente » Cod sursa (job #2239757) | Cod sursa (job #1078922) | Cod sursa (job #2680760) | Cod sursa (job #1377713) | Cod sursa (job #317662)
Cod sursa(job #317662)
//programul nu-mi apartine, doar il testez ;)
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
fstream f;
fstream g;
vector<float> var(100);
int i;
char c;
string expr;
int variableCount;
string operation;
int searchPos;
bool exprSolved;
float aux;
string x;
int valid(string op)
{
if(op[0]=='+'||op[0]=='-'||op[0]=='*'||op[0]=='/')
return 0;
if(op[1]=='+'||op[1]=='-'||op[1]=='*'||op[1]=='/')
return 0;
if(op[2]!='+'&&op[2]!='-'&&op[2]!='*'&&op[2]!='/')
return 0;
return 1;
}
int main()
{
f.open("evaluare.in",fstream::in);
g.open("evaluare.out",fstream::out);
f >> expr;
while(!f.eof())
{
f >> c;if(f.eof()) break;
f >> var[(int)c-97];
variableCount++;
}
searchPos = expr.length()-1;
while(searchPos>=0)
{
operation = "";
operation = expr.substr(searchPos,3);
if(valid(operation))
{
switch(operation[2])
{
case '+':
aux = var[operation[0]-97]+var[operation[1]-97];
break;
case '-':
aux = var[operation[0]-97]-var[operation[1]-97];
break;
case '*':
aux = var[operation[0]-97]*var[operation[1]-97];
break;
case '/':
if(var[operation[0]-97]==0)
aux = 0;
else
aux = var[operation[0]-97]/var[operation[1]-97];
break;
}
var[variableCount++] = aux;
x = "";
x.append(1,(char)(variableCount+96));
x.append(expr,searchPos+3,100);
expr.replace(searchPos,x.length(),x);
searchPos = expr.length()-1;
}
else
searchPos--;
}
g << var[variableCount-1] << "\n";
g.close();
f.close();
return 0;
}