2015-09-27 90 views
-4

我试图写一个程序,反复提示用户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; 
} 

这一切从改变很多次了搞砸了,我这个只是有点新来这个东西道歉。

+0

所以按预期这是行不通的,但它有什么作用呢?它编译失败吗?它会崩溃吗?它会返回错误的值吗? – Quentin

+0

问题是.....? –

+0

此行小艾破,只是说...'否则,如果(开方(判别<= -1);'你可能要一个')',而不是';'有 –

回答

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; 
} 
+0

我给你建议的修改,我仍然得到错误 38:代码在主函数)没有影响( 41:别人放错了位置在函数main() 43:X1和X2分配有从未在函数main() 44中使用的值:声明终止incorreclty 51:声明终止错误 52:意外} – Perc

+0

此代码[不编译](HTTP: //melpon.org/wandbox/permlink/ZaQ8gj9472CNQ2sr)带有一个警告。请再次检查您的代码。 – MikeCAT

-1
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; 
} 
+0

我终于通过改变你的建议并修改了我的else语句并添加了一段时间来编译没有错误。谢谢你的帮助。 – Perc

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` 
+0

我得到了上面的代码工作,但我不是特别确定程序逻辑。我不确切知道你打算在计划的几个点上做什么。您似乎也不确定需要分号的位置。 – Jay