Cod sursa(job #406690)

Utilizator WaldzellFelix Pop Waldzell Data 1 martie 2010 18:59:42
Problema Ecuatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("ecuatie.in");
ofstream fout("ecuatie.out");
char s[300],s1[300],s2[300];
int n;
long nr1, nr2, nrx1, nrx2;
void rezolva(char *, long &, long &);
int main()
{   int i;char *p;
    fin>>n;
    for (i=0; i<n; i++)
    {
       fin>>s1;
       p=strchr(s1,'=');
       strcpy(s2,p+1);
       *p=NULL;
       rezolva(s1, nr1, nrx1);
       rezolva(s2, nr2, nrx2);
       if (nrx1==nrx2)
          if (nr1==nr2)
             fout<<"infinit\n";
             else
             fout<<"imposibil\n";
          else
          fout<<((double)(nr2-nr1)/(nrx1-nrx2))<<"\n";

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

void rezolva(char *s, long &nr, long &nrx)
{   char *p, ss[300]; long v; int semn=1;
    strcpy(ss,s); p=strtok(ss,"+-");
    nr=0; nrx=0;
    while (p)
      { l=strlen(p);
        if(p[0]=='x')
            nrx+=semn;
            else if(p[l-1]=='x')
                        {   p[l-1]=NULL;
                            v=atol(p);
                            nrx=nrx+semn*v;
                        }
                        else
                        {   v=atol(p);
                            nr=nr+semn*v;
                        }
        if (s[p+l-ss]=='+')
            semn=1;
            else
            semn=-1;
        p=strtok(NULL, "+-");
      }
}