Почему моя функция не работает, мне нужно сделать калькулятор расстояния
Калькулятор расстояния, все работает, пока программа не достигает функции, затем программа просто перестает работать. Я пытался удалить 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
,