C++计算表达式
我试图写一个程序,反复提示用户3倍的系数值a,b和c,然后将评价使用下面的表达式和对于x显示两个可能的值编程问题。 X = 2C±√2a-35/B-5CC++计算表达式
如果用户输入-999一个程序应该终止。此外,必须在开始时清除屏幕,并且如果未为a输入-999,则在分开的线路上提示用户输入b和c。
此外,如果输入是像被零除或负的sqrt无效必须显示一个错误消息。这是我到目前为止,我已经改变了它百万次,以便让它编译和不断收到错误。
#include <iostream.h>
#include <cmath>
#include <conio.h>
using namespace std;
int main (void)
{
clrscr();
float a, b, c, x1, x2, discriminant, divisor;
//Getting values for a,b,c
cout<<"Enter the value for A (-999 to quit): "<<endl;
cin >> a;
if(a ==-999)return 0;
cout<<"Enter the value for B: "<<endl;
cin>>b;
cout<<"Enter the value for C: "<<endl;
cin>>c;
// Evaluating
discriminant=(2*a-35);
divisor=(b-5*c)
if (discriminant >0);
{
x1=(2*c+sqrt(discriminant))/(divisor);
x2=(2*c-sqrt(discriminant))/(divisor);
}
else (discriminant ==0)
{
x1=x2=(2*c)/(divisor);
}
else if (sqrt(discriminant <= -1);
cout<<"Invalid Value"<<endl;
{
else if (divisor ==0)
cout<<"Invalid Value"<<endl;
}
else
{
cout<<"x1= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
cout<<"x2= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
}
system ("pause");
return 0;
}
这一切从改变很多次了搞砸了,我这个只是有点新来这个东西道歉。
该代码编译,但结果似乎不正确。
//#include <iostream.h>
#include <iostream> // delete .h
#include <cmath>
//#include <conio.h> // Wandbox gcc 4.8.2 doesn't seem supporting this
using namespace std;
int main (void)
{
//clrscr(); // Wandbox gcc 4.8.2 doesn't seem supporting this
float a, b, c, x1, x2, discriminant, divisor;
//Getting values for a,b,c
cout<<"Enter the value for A (-999 to quit): "<<endl;
cin >> a;
if(a ==-999)return 0;
cout<<"Enter the value for B: "<<endl;
cin>>b;
cout<<"Enter the value for C: "<<endl;
cin>>c;
// Evaluating
discriminant=(2*a-35);
//divisor=(b-5*c)
divisor=(b-5*c); // add semicolon here
//if (discriminant >0);
if (discriminant >0) // delete semicolon here
{
x1=(2*c+sqrt(discriminant))/(divisor);
x2=(2*c-sqrt(discriminant))/(divisor);
}
//else (discriminant ==0)
else if (discriminant ==0) // add if
{
x1=x2=(2*c)/(divisor);
}
//else if (sqrt(discriminant <= -1);
else if (discriminant <= -1) // delete sqrt(and semicolon
cout<<"Invalid Value"<<endl;
//{ // delete this
else if (divisor ==0)
{ // add this
cout<<"Invalid Value"<<endl;
}
else
{
cout<<"x1= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
cout<<"x2= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
}
//system ("pause"); // include cstdlib or delete this
return 0;
}
int main (void)
{
clrscr();
float a, b, c, x1, x2, discriminant, divisor;
//Getting values for a,b,c
cout<<"Enter the value for A (-999 to quit): "<<endl;
cin >> a;
if(a ==-999)return 0;
cout<<"Enter the value for B: "<<endl;
cin>>b;
cout<<"Enter the value for C: "<<endl;
cin>>c;
// Evaluating
discriminant=(2*a-35);
divisor=(b-5*c)
if (divisor ==0)
{
cout<<"Invalid Value"<<endl;
return 0;
}
if (discriminant >0);
{
x1=(2*c+sqrt(discriminant))/(divisor);
x2=(2*c-sqrt(discriminant))/(divisor);
}
else if (discriminant ==0)
{
x1=x2=(2*c)/(divisor);
}
else
{
cout<<"Invalid Value"<<endl;
return 0;
}
cout<<"x1= "<< x1 <<endl;
cout<<"x2= "<< x2 <<endl;
return 0;
}
我终于通过改变你的建议并修改了我的else语句并添加了一段时间来编译没有错误。谢谢你的帮助。 – Perc
#include <iostream>
#include <cmath>
using namespace std;
int main (void)
{
//clrscr();
char exit_char;
//Why not use double
double a, b, c, x1, x2, discriminant, divisor;
//float a, b, c, x1, x2, discriminant, divisor;
//Getting values for a,b,c
cout<<"Enter the value for A (-999 to quit): "<<endl;
cin >> a;
if(a ==-999)
return 0;
cout<<"Enter the value for B: "<<endl;
cin>>b;
cout<<"Enter the value for C: "<<endl;
cin>>c;
// Evaluating
discriminant=(2*a-35);
divisor=(b-5*c); //Do you want b-(5*c) or (b-5)*c
/*if (discriminant >0);
{
x1=(2*c+sqrt(discriminant))/(divisor);
x2=(2*c-sqrt(discriminant))/(divisor);
}
//This is supposed to be an else if block
//else (discriminant ==0)
else
if(discriminant == 0)
{
x1=x2=(2*c)/(divisor);
}
else if (sqrt(discriminant <= -1);
cout<<"Invalid Value"<<endl;
{ */
//
if(discriminant > 0)
{
x1=(2*c+sqrt(discriminant))/(divisor);
x2=(2*c-sqrt(discriminant))/(divisor);
}
else
{
if(discriminant == 0)
{
x1=x2=(2*c)/(divisor);
}
else
{
if(sqrt(discriminant) <= -1);
cout<<"Invalid Value"<<endl;
}
}
//
if (divisor == 0)
cout<<"Invalid Value"<<endl;
else
{
//cout<<"x1= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
//cout<<"x2= "<<"("<<(2*c)<<"+ i"<<sqrt(discriminant)<<")/"<<divisor<<endl;
cout<<"x1 = "<<x1<<endl;
cout<<"x2 = "<<x2<<endl;
}
//system ("pause");
cout<<"Enter any char to quit the program"<<endl;
cin>>exit_char;
return 0;
}`enter code here`
我得到了上面的代码工作,但我不是特别确定程序逻辑。我不确切知道你打算在计划的几个点上做什么。您似乎也不确定需要分号的位置。 – Jay
所以按预期这是行不通的,但它有什么作用呢?它编译失败吗?它会崩溃吗?它会返回错误的值吗? – Quentin
问题是.....? –
此行小艾破,只是说...'否则,如果(开方(判别