Cod sursa(job #1921240)

Utilizator flaviu.albuAlbu Flaviu Bogdan flaviu.albu Data 10 martie 2017 11:51:04
Problema Ecuatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
ifstream f("ecuatii.in");
ofstream g("ecuatii.out");
void rezolva(char *s,float &nr,float &nrx,int &k,char s3[300])
{
    char *p,s2[300];
    int v, l,semn=1;
    nr=0;
    nrx=0;
    strcpy(s2,s);
    p=strtok(s,"+-");
    while(p)
    {

        l=strlen(p);
        if(p[0]=='x') nrx=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;
            }
            p=strtok(NULL,"+-");

            if(s3[k]=='+')
                semn=1;
            else semn=-1;
            k++;


    }
}

int main()
{
    float nr1,nr2,nrx1,nrx2;
    int i,n,l,j,k;
    char s[300],s1[300],s2[300],*p,s3[300];
    f>>n;
    f.get();
    for(i=0;i<n;i++)
    {
        f.getline(s,300);
        k=0;
        l=strlen(s);
        for(j=0;j<l;j++)
            if((s[j]=='-')||(s[j]=='+'))
            {s3[k]=s[j];
            k++;
            }
        k=0;
        p=strchr(s,'=');
        strcpy(s1,p+1);
        *p=NULL;
        rezolva(s,nr1,nrx1,k,s3);
        rezolva(s1,nr2,nrx2,k,s3);

        if(nrx1==nrx2)
            if(nr1==nr2)
            g<<"infinit"<<endl;
            else g<<"imposibil"<<endl;
        else g<<(nr2-nr1)/(nrx1-nrx2)<<endl;
    }
}