2011年上海交通大学计算机研究生机试真题

http://ac.jobdu.com/problem.php?pid=1103 二次方程计算器

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;

int main(void)
{
	int i,index,a,b,c,m,sign,ra,rb,rc;
	char str[200];
	double rt,first,second;
	while(scanf("%s",str)!=EOF)
	{
		for(i=0;str[i]!='\0';i++)
		{
			if(str[i]=='=')
			{
				index=i;
				break;
			}
		}
		a=b=c=0;
		m=0,sign=1;
		for(i=0;i<index;)    //方程等式的左半部分
		{
			if(str[i]>='0' && str[i]<='9')
			{
				m=m*10+str[i]-'0';
				i++;
			}
			else if(str[i]!='x')
			{
				if(str[i]=='+')
				{
					c+=m*sign;
					sign=1;
				}
				else if(str[i]=='-')
				{
					c+=m*sign;
					sign=-1;
				}
				i++;
				m=0;
			}
			else if(str[i]=='x' && str[i+1]=='^')
			{
				if(i==0 || str[i-1]=='+' || str[i-1]=='-')
					m=1;
				a+=m*sign;
				m=0;
				i=i+3;
			}
			else if(str[i]=='x' && str[i+1]!='^')
			{
				if(i==0 || str[i-1]=='+' || str[i-1]=='-')
					m=1;
				b+=m*sign;
				m=0;
				i++;
			}
		}//for
		c+=m*sign;

		ra=rb=rc=0;
		m=0,sign=1;
		for(i=index+1;str[i]!='\0';)    //方程等式的右半部分
		{
			if(str[i]>='0' && str[i]<='9')
			{
				m=m*10+str[i]-'0';
				i++;
			}
			else if(str[i]!='x')
			{
				if(str[i]=='+')
				{
					rc+=m*sign;
					sign=1;
				}
				else if(str[i]=='-')
				{
					rc+=m*sign;
					sign=-1;
				}
				i++;
				m=0;
			}
			else if(str[i]=='x' && str[i+1]=='^')
			{
				if(i==index+1 || str[i-1]=='+' || str[i-1]=='-')
					m=1;
				ra+=m*sign;
				m=0;
				i=i+3;
			}
			else if(str[i]=='x' && str[i+1]!='^')
			{
				if(i==index+1 || str[i-1]=='+' || str[i-1]=='-')
					m=1;
				rb+=m*sign;
				m=0;
				i++;
			}
		}//for
		rc+=m*sign;
		a-=ra;
		b-=rb;
		c-=rc;
		if(b*b-4*a*c>=0)
		{
			rt=sqrt(1.0*b*b-4*a*c);
			if(a>0)
			{
				first=(-b-rt)/(2*a);
				second=(-b+rt)/(2*a);
			}
			else
			{
				first=(b+rt)/(-2*a);
				second=(b-rt)/(-2*a);
			}
			if(first<second)
				printf("%.2lf %.2lf\n",first,second);
			else
				printf("%.2lf %.2lf\n",second,first);
		}
		else
			printf("No Solution\n");
	}
	return 0;
}

// 3x+4=x^2+x
// -x^2=0



你可能感兴趣的:(c,交通)