Как отладить эту ошибку в C: определение функции здесь не разрешено? - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в программировании и беру класс edX CS50 (Введение в программирование).Есть этот код C, который я пытался скомпилировать, но всегда приводит к сообщению об ошибке, которое выглядит следующим образом: error message

Это строки кода, которые я пыталсядля компиляции:

#include <cs50.h>
#include <stdio.h>
#include <math.h>

int main (void)
{
   bool valid_triangle (float a, float b, float c);
   bool valid_triangle (float a, float b, float c)
  {
   // check positive values
     if ( a <= 0 || b <= 0 || c <= 0 )
    {
    return false;
     }
    //check two sides are longer
    if ( (a + b <= c) || (a+c <= b) || (b+c <= a))
    {
    return false;
    }

    //otherwise return true
     return true;
 }

}

Кто-нибудь знает, что я сделал не так и как исправить эту ошибку?Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Сообщения об ошибках компилятора - ваш лучший друг, поэтому используйте их в своих интересах.Здесь, ваше сообщение об ошибке triangle.c:9.6 говорит вам, что ваша ошибка находится в строке 9. Кроме того, оно выплевывает строку error: function definition is not allowed here.

В процедурном языке C определения функций не разрешены внутри других функций.

Чтобы исправить это, либо определите свою функцию перед функцией main(), а затем просто вызовите функцию valid_triangle из своей основной функции.Другой способ организовать ваш код - поместить прототип функции valid_triangle перед функцией main, а затем определить valid_triangle под телом функции main.

Помните, основной () функция является точкой входа для вашей программы.

0 голосов
/ 26 декабря 2018

следующий предложенный код:

  1. выполняет указанную функциональность
  2. безупречной компиляции
  3. отображает один способ иметь подфункции в C

и теперь предложенный код:

//#include <cs50.h>
#include <stdio.h>   // putc()
//#include <math.h>
#include <stdbool.h> // bool, true, false


bool valid_triangle (float a, float b, float c)
{
    // check positive values
    if ( a <= 0 || b <= 0 || c <= 0 )
    {
        return false;
    }

    //check two sides are longer
    if ( (a + b <= c) || (a+c <= b) || (b+c <= a))
    {
        return false;
    }

    //otherwise return true
    return true;
}


int main (void)
{
    float a = 1;
    float b = 2;
    float c = 3;

    if( valid_triangle (a, b, c) )
    {
       puts( "able to calculate triangle area" );
    }

    else
    {
       puts( "area of triangle cannot be calculated" );
    }

}
...