C++程序设计问题的评价表达式
我正在尝试编写一个程序,反复提示用户输入3个系数值a、b和c,然后使用以下表达式进行计算,并显示x的两个可能值。 x=2c±√2a-35/b-5c 如果用户输入-999作为输入,则程序应终止。此外,如果未为a输入-999,则必须在开始时清除屏幕,并在单独的行上提示用户输入b和c 此外,如果输入无效(如除零或负sqrt),则必须显示错误消息。这是我到目前为止所做的,我已经对它进行了数百万次的修改,以使它能够编译并不断出错C++程序设计问题的评价表达式,c++,C++,我正在尝试编写一个程序,反复提示用户输入3个系数值a、b和c,然后使用以下表达式进行计算,并显示x的两个可能值。 x=2c±√2a-35/b-5c 如果用户输入-999作为输入,则程序应终止。此外,如果未为a输入-999,则必须在开始时清除屏幕,并在单独的行上提示用户输入b和c 此外,如果输入无效(如除零或负sqrt),则必须显示错误消息。这是我到目前为止所做的,我已经对它进行了数百万次的修改,以使它能够编译并不断出错 #include <iostream.h>
#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;
}
所以它并没有按预期的那样工作,但是它做了什么呢?它编译失败了吗?它会崩溃吗?它会返回错误的值吗?问题是…?这条线看起来很破,只是说。。。否则,如果sqrtdiscriminant,问题是无论我如何更改它,它都不会编译。第28、33、34、40、43和51行有错误。使用borland进行编译,如果这有什么不同的话,因为我必须为结构和清晰性而努力。将代码分成小块添加。然后,实际读取错误消息。虽然它们有时很隐晦,但它们通常能说出问题所在。另外,看看我做了你建议的更改,我仍然得到错误38:代码在函数main中无效41:在函数main 43:x2和x1中错放了else分配了一个从未在函数main中使用过的值44:声明终止不正确51:声明错误终止52:意外}此代码带有一个警告。请再次检查您的代码。我得到了上述代码的工作,但我不是特别确定的程序逻辑。我不知道你打算在程序中的几点上做什么。你似乎也不确定分号在哪里需要,我最终通过修改你的建议,修改else-if语句,并添加了一段时间,让分号顺利编译。谢谢你的帮助。
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;
}
#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`