Почему моя функция не работает, мне нужно сделать калькулятор расстояния - PullRequest
0 голосов
/ 09 декабря 2018

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

#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 ]

0 голосов
/ 09 декабря 2018
    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.

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

В main у вас есть

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

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

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

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

double distance;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...