2017-01-24 3 views
-1

« Тип называемый тип объекта «int» не является указателем функции или функции »ошибка возникает в строке 26 . что моя формула я не могу определить происхождение ошибки, пожалуйста, помогитеОшибка в строке 26 «Вызываемый тип объекта« int »не является указателем функции или функции? Почему это происходит?

 11 #include <stdio.h> 
     12 #include <stdlib.h> 
     13 #include <math.h> 
     14  
     15 int main()   
     16  double p1, ac, at, p2, p3, ar, p; 
     17  int code; 
     18  p=(p1+p2+p3)/2; 
     19  setvbuf(stdout, NULL, _IONBF, 0); 
     20  
     21  while(1){ 
     22   printf("Enter code and parameter(s) (Code=0 to Quit):"); 
     23   scanf("%d%lf%lf%lf", &code, &p1, &p2, &p3); 
     24   if(code==0) break; 
     25   if(code==1){ 
     26    ac=2*M_PI*(p1*p1); 
     27    printf("area of circle: %f", ac); 
     28   } 
     29   else if(code==2){ 
     30    at=sqrt(p*(p-p1)*(p-p2)*(p-p3)); 
     31    printf("area of triangle: %f", at); 
     32   } 
     33   else if(code==3){ 
     34    ar=p1*p2; 
     35    printf("area of rectangle: %f", ar); 
     36   } 
     37   return EXIT_SUCCESS; 
     38  } 
     39 } 
+0

Кстати, почему бы не использовать 'switch (code)' вместо каскадного 'if'? – DyZ

+1

Собственная библиотека C делает не задайте 'M_PI' в' '. Для debug попробуйте 'ac = 2 * 3.14 * (p1 * p1);' – chux

+1

@chux совершенно правильно, но XSI-совместимый math.h * будет * определять 'M_PI', если у вас есть # #define _XOPEN_SOURCE 700' до любой заголовок системы. Наверное, этой программы нет. – rici

ответ

3

Вы упускаете открывающую фигурную скобку после main:.

int main() { 
    double p1, ac, at, p2, p3, ar, p; 
    ... 
+0

Я понял, что после публикации спасибо –

+0

Но это не строка 26, так что я смущен! –

+0

@KeeganEdwards Пожалуйста, подтвердите, является ли код, который мы обсуждаем, кодом, который вызывает вашу ошибку, и ошибка по-прежнему находится в строке 26. – DyZ