Cod sursa(job #699415)

Utilizator bogdan211Nastasa Bogdan bogdan211 Data 29 februarie 2012 19:13:41
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include<fstream>
#include<stdlib.h> 
#include <cstdio>
#include <cstring>
using namespace std;
ifstream fin("ecuatii2.in");
ofstream out("ecuatii2.out");
int main ()
{

	char a[226];
	int n,i,k,q=0,nn;
	float a1=0,b1=0,a2=0,b2=0;
	fin>>nn;
	for(k=1;k<=nn;k++)
	{	
	fin>>a;
	a1=0;a2=0;b1=0;b2=0;q=0;n=0;
		for(i=0;i<strlen(a);i=i+1)
	{
		if(q==0)
		{   n=0;
			if(a[i]=='+'||(i==0&&a[i]>='0'&&a[i]<='9'))//pozitive inaintea egalului
				{
					if(a[i]=='+')
						i++;
					while(a[i]>='0'&&a[i]<='9')
				{
					n=n*10+a[i]-'0';
					i++;
				}
			if(a[i]!='x')
				{a1=a1+n;i--;
				}
			else
				{b1=b1+n;}
				}
			else
			if(a[i]=='-')//negative inaintea egalului
			{i++;
				while(a[i]>='0'&&a[i]<='9')
				{
					n=n*10+a[i]-'0';
					i++;
				}
			if(a[i]!='x')
				{a1=a1-n;i--;}
			else
				{
					b1=b1-n;
				}
			}
		}
		else
		{   n=0;
			if(a[i]=='+'||(a[i-1]=='='&&a[i]>='0'&&a[i]<='9'))//pozitive dupa egalului
				{   if(a[i]=='+')
					i++;
					while(a[i]>='0'&&a[i]<='9')
				{
					n=n*10+a[i]-'0';
					i++;
				}
			if(a[i]!='x')
				a2=a2+n;
			else
				b2=a2+n;
				}
				else
			if(a[i]=='-')//negative inaintea egalului
			{i++;
				while(a[i]>='0'&&a[i]<='9')
				{
					n=n*10+a[i]-'0';
					i++;
				}
			if(a[i]!='x')
				a2=a2-n;
			else
				b2=b2-n;
			}
	    }
		if(a[i]=='=')
				q=1;

	}
	if(b1==b2&&a1==a2)
		out<<"infinit"<<"\n";
	else
	if(b1==b2&&a1!=a2)
		out<<"imposibil"<<"\n";
	else
		out<<(a2-a1)/(b1-b2)<<"\n";
	}
	return 0;
}