2016-03-10 2 views
-4

Я начинаю программировать на C++, и это только моя вторая программа. Я получаю согласованную ошибку «ожидаемого неквалифицированного идентификатора до ...» idk, что это значит и не может его решить. Это на линиях 21,27,29,33,35,38,40,43,45,48,54,56,59,61,64,66,70.Программирование на C++, непонимание ошибок

#include <cstdlib> 
#include <iostream> 
#include <fstream> 
#include <math.h> 

using namespace std; 

int main(); 

int a, b, c, x,y; 
int discriminant; 
double x1, x2; 

int countdataisinvalid=0; 
int countdataisvalid=0; 
int countnolastterm=0; 
int countonexvalue=0; 
int countnomiddleterm=0; 
int counttwoxterms=0; 

while(!cin.eof) 
    { 
     a*x*x+b*x+c; 
    } 


    if (a==0), 
     countdataisinvalid++; 
     { 
      cout << "A is 0, data invalid." << endl; 
     } 

    else if, (discriminant < 0), 
     countdataisinvalid++; 
     { 
      cout << "The square is a negative number, data invalid."  <<    endl; 
     } 
    else, 
     countdataisvalid++; 
     { 
      cout << " Data set is valid." << endl; 
     } 
    if (c==0), 
     countnolastterm++; 
     { 
      cout << "C is 0, there is no last term." << endl; 
     } 
{ 
x1 = (-b + sqrt(b*b-4*a*c))/(2*a); 
x2 = (-b - sqrt(b*b-4*a*c))/(2*a); 

cout.precision(3); 
} 
    if (x1==x2), 
     countonexvalue++; 
     { 
      cout << "Only one x value." << endl; 
     } 
    else, if (x1==-x2), 
     countnomiddleterm++; 
     { 
      cout << "There is no middle term." << endl; 
     } 
    else 
     counttwoxterms++; 
     { 
      cout << "There are two x values." << endl; 
     } 

{ 
y = a*x1*x1+b*x1+c 
y = a*x2*x2+b*x2+c 

cout << "When x is " << x << "y is " << y << endl; 
} 
+0

Ваш код содержит, возможно, бесконечный цикл и множество вредных запятых, которые там, где их не должно быть. – MikeCAT

+1

'int main();' * объявляет * функцию main, но вам нужно запустить определение *, если вы хотите ввести код, например, '' '' '' '' 'и' while' внутри, для этого вам нужно 'int main {', и'} 'после кода, который должна выполнить функция. –

+0

@MikeCAT вы можете уточнить, как это исправить. Я действительно не знаю много причин, почему – Habbasi

ответ

1

В вашем коде слишком много ошибок. Вы должны снова изучить C++, написав простые программы.

По крайней мере, этот код скомпилирован.

#include <cstdlib> 
#include <iostream> 
#include <fstream> 
#include <math.h> 

using namespace std; 

int main() 
{ // use { to begin definition of function, not ; 

    // initialize ariables for in case the reading fails 
    int a = 0, b = 0, c = 0, x = 0, y = 0; 
    int discriminant = 0; 
    double x1 = 0, x2 = 0; 

    int countdataisinvalid=0; 
    int countdataisvalid=0; 
    int countnolastterm=0; 
    int countonexvalue=0; 
    int countnomiddleterm=0; 
    int counttwoxterms=0; 

    // you should read numbers instead of writing possibly infinite loop and meaningless statement 
    cin >> a >> b >> c >> x >> discriminant >> x1 >> x2; 


    if (a==0) // remove extra comma 
     { 
      countdataisinvalid++; // move this statement to right position 
      cout << "A is 0, data invalid." << endl; 
     } 

    else if (discriminant < 0) // remove extra commas 
     { 
      countdataisinvalid++; // move this statement to right position 
      cout << "The square is a negative number, data invalid."  <<    endl; 
     } 
    else // remove extra comma 
     { 
      countdataisvalid++; // move this statement to right position 
      cout << " Data set is valid." << endl; 
     } 
    if (c==0) // remove extra comma 
     { 
      countnolastterm++; // move this statement to right position 
      cout << "C is 0, there is no last term." << endl; 
     } 
    { 
     x1 = (-b + sqrt(b*b-4*a*c))/(2*a); 
     x2 = (-b - sqrt(b*b-4*a*c))/(2*a); 

     cout.precision(3); 
    } 
     if (x1==x2) // remove extra comma 
      { 
       countonexvalue++; // move this statement to right position 
       cout << "Only one x value." << endl; 
      } 
     else if (x1==-x2) // remove extra commas 
      { 
       countnomiddleterm++; // move this statement to right position 
       cout << "There is no middle term." << endl; 
      } 
     else 
      { 
      counttwoxterms++; // move this statement to right position 
        cout << "There are two x values." << endl; 
      } 

    { 
     y = a*x2*x2+b*x2+c; // add semicolon and remove useless statement 

     cout << "When x is " << x << "y is " << y << endl; 
    } 

    return 0; // add a statement to return some value 
} // add this as end of definition of function 
Смежные вопросы