Cod sursa(job #386267)

Utilizator johsonsbabiJohnsons Babi Minune johsonsbabi Data 24 ianuarie 2010 15:07:00
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <stdio.h>
FILE*f=fopen("ecuatii2.in","r");
FILE*g=fopen("ecuatii2.out","w");
int n,i,semn,nr,st,stx,existaxst,dr,existaxdr,drx;
char ch;
double sol;

void solve(){
	if(!drx && !stx && st==dr){
		fprintf(g,"infinit\n");
		return;
	}
	if(drx==stx && st==dr){
		fprintf(g,"infinit\n");
		return;
	}
	stx=stx-drx;
	st=st-dr;
	if(!stx){
		fprintf(g,"imposibil\n");
		return;
	}
	sol= (double)(st*-1)/(double)stx;
	fprintf(g,"%.4lf\n",sol);
}

int main(){
	
	fscanf(f,"%D",&n);
	fscanf(f,"%c",&ch);
	for(i=1;i<=n;i++){
		existaxst=existaxdr=0;
		dr=st=0;
		drx=stx=0;
		nr=0;
		semn=1;
		while(ch!='='){
			fscanf(f,"%c",&ch);
			if(ch >= '0' && ch <= '9'){
				if(!nr) nr=ch-48;
				else
					nr=nr*10+(ch-48);
			}
			if(ch =='-'){ // -
				st+= semn*nr;
				semn =-1;
				nr =0;
			}
			else if(ch=='+'){ // +
				st+= semn*nr;
				semn =1;
				nr =0;
			}
			if(ch=='x'){ // x
				existaxst=1;
				if (!nr) nr=1;
				stx+=nr*semn;
				nr=0;
			}
		}
		st+= semn*nr;
		nr=0;
		semn=1;
		while(ch!='\n'){
			fscanf(f,"%c",&ch);
			if(ch >= '0' && ch <= '9'){
				if(!nr) nr=ch-48;
				else
					nr=nr*10+(ch-48);
			}
			if(ch =='-'){
				dr+= semn*nr;
				semn =-1;
				nr =0;
			}
			else if(ch=='+'){
				dr+= semn*nr;
				semn =1;
				nr =0;
			}
			if(ch=='x'){
				existaxdr=1;
				if (!nr) nr=1;
				drx+=nr*semn;
				nr=0;
			}
		}
		dr+= semn*nr;
		solve();
	}
	
	fclose(f);
	fclose(g);
	return 0;
}