Nick Califano Ответов: 1

Ошибка использования Косинуса при вычислении в C


Мне нужно вычислить угловую меру и периметр n-гона. Я должен использовать Косинус для вычисления оставшейся стороны, и я постоянно получаю ошибку, говоря, что это неопределенная ссылка на cosf, и я сделал некоторые правки вокруг, я честно не могу понять это


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

int main(void)
{
	float sides, radius, side, perimeter, perimeterFeet, rads;
	float sideLength = 0;
	double x, angle;
	
	printf("Enter the number of sides on the polygon: ");
	scanf("%f", &sides);
	printf("Enter the radius of the polygon: ");
	scanf("%f", &radius);
	
	angle = (sides-2)/sides * 180;
	rads = angle *  0.01745329252;
	
	x = double cos(angle);
	sideLength = radius*radius + radius*radius - 2 * radius * radius * x;
	sideLength = sqrtf(sideLength);
	
	perimeter - sideLength* sides;
	perimeterFeet = perimeter/12;
	
	printf("Angle is %f radians (%f degrees) \n", rads, angle);
	printf("The side is %f inches \n", sideLength);
	printf("The perimeter is %f inches and %f feet", perimeter, perimeterFeet);
	
}


Что я уже пробовал:

Я пытался меняется вокруг, потому что, чтобы папа, потому что двойной(двойной угол), потому что(двойного угла), потому что(угол) Я здесь в тупике

1 Ответов

Рейтинг:
2

OriginalGriff

Отсутствующая библиотека: как вы это исправите, зависит от того, какой компилятор вы используете, но для gcc добавлять "-lm"до конца компиляции вариантов:

gcc -o main *.c -lm

И либо конвертировать double к актерскому составу (double) в этой строке:
x = double cos(angle);
Или убрать.
Вы, вероятно, хотите удалить букву " f " из sqrtf также:
sideLength = sqrt(sideLength);