Почему моя функция не работает, мне нужно сделать калькулятор расстояния

Калькулятор расстояния, все работает, пока программа не достигает функции, затем программа просто перестает работать. Я пытался удалить void а также intИз строки я вызываю функцию в главной функции, но все равно ничего.

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


void distanceFunc(int x2, int x1, int y2, int y1, int distance);

int main ()
{
    int action = 0;
    int x1 = 0;
    int y1 = 0;
    int x2 = 0;
    int y2 = 0;
    int distance = 0;
    printf("Welcome to my calculator!\n");
    printf("1 - Calc distance between 2 points\n");
    printf("2 - Calc hypotenuse of triangle\n");
    printf("3 - Calc area and perimeter of circle\n");
    printf("4 - Calc area of rectangle\n");
    printf("5 - Calc are of square\n");
    printf("6 - Exit\n");
    scanf("%d", &action);
    if (action == 1)
    {
        printf("Enter point1 coordinates: ");
        scanf("%d %d", &x1, &y1);
        printf("Enter point2 coordinates: ");
        scanf("%d %d", &x2, &y2);
        void distanceFunc(int x2, int x1, int y2, int y1, int distance);
    }
    return 0;
}


void distanceFunc(int x2, int x1, int y2, int y1, int distance)
{
    distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    printf("Distance is %f\n", distance);
}

2 ответа

В main у тебя есть

void distanceFunc(int x2, int x1, int y2, int y1, int distance);

Это не вызывает функцию, она только объявляет ее (но вы уже сделали это наверху). Тебе нужно

distanceFunc(x2, x1, y2, y1, distance);

У вас тоже несоответствие формата. Вы должны изменить тип для distance,

double distance;

в функции, и удалите int distance Аргумент функции, поскольку он не имеет смысла.

    void distanceFunc(int x2, int x1, int y2, int y1, int distance);

это объявление функции, а не вызов функции.

Чтобы вызвать функцию, сделайте так же, как и для других функций, которые вы используете:

    distanceFunc(x2, x1, y2, y1, distance);

Также накачайте уровень предупреждения компилятора, указав опции:

-Wall -Wextra -pedantic

И увидите что-то вроде этого:

main.c: In function ‘main’:
main.c:14:9: warning: unused variable ‘distance’ [-Wunused-variable]
     int distance = 0;
     ^
main.c: In function ‘distanceFunc’:
main.c:45:5: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
     printf("Distance is %f\n", distance);
     ^
main.c:45:5: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]

и узнать это f неправильный спецификатор преобразования для печати int,

Другие вопросы по тегам