Cod sursa(job #128399)

Utilizator gabor_oliviu1991gaboru corupt gabor_oliviu1991 Data 27 ianuarie 2008 00:42:44
Problema Ecuatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include<fstream.h>
#include<math.h>
int main()
{  long a,b,c,k,d[1000]={0},x1,x2;
   struct { long p1,q1,p2,q2;}v[1000]={0},aux;
   int i,l=0,ok,j;
   ifstream f("ecuatie.in");
   ofstream g("ecuatie.out");
   f>>a>>b>>c>>k;
   x1=(-b+sqrt((pow(b,2)-4*a*c)))/(2*a);
   x2=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);
   for(i=-abs(a);i<0;i++)
	if(a%i==0&&i!=0) d[l++]=i;
   for(i=1;i<=a;i++)
	if(a%i==0)	 d[l++]=i;
   j=0;
   for(i=0;i<l;i++)
	{ v[j].p1=d[i];
	  v[j].q1=-x1*d[i];
	  v[j].p2=a/d[i];
	  v[j].q2=-x2*(a/d[i]);
	  j++;
	  v[j].p1=d[i];
	  v[j].q1=-x2*d[i];
	  v[j].p2=a/d[i];
	  v[j].q2=-x1*(a/d[i]);
	  j++;}

   do { ok=1;
	for(i=0;i<j-2;i++)
		if((v[i].p1==v[i+1].p1)&&(v[i].q1>v[i+1].q1))
			{aux=v[i];v[i]=v[i+1];v[i+1]=aux;ok=0;}
	}

   while(ok!=1);
   if(v[k-1].p1==1)   g<<"(x";
     else
	if(v[k-1].p1==-1)  g<<"(-x";
	    else       g<<"("<<v[k-1].p1<<"x";
   if(v[k-1].q1>0)
	g<<"+"<<v[k-1].q1<<")";
   else
	g<<v[k-1].q1<<")";
   if(v[k-1].p2==1)   g<<"(x";
     else
	if(v[k-1].p2==-1)  g<<"(-x";
	    else       g<<"("<<v[k-1].p2<<"x";
   if(v[k-1].q2>0)
	g<<"+"<<v[k-1].q2<<")";
   else
	g<<v[k-1].q2<<")";

   return 0;
   }