В вашем коде есть несколько проблем. Прежде всего, main program { ... }
не является допустимой записью в программе на C ++ (которую, как я полагаю, вы хотели использовать в качестве основной функции). Каждая программа на C ++ должна содержать функцию int main() { }
, которая является начальной точкой. Таким образом, вам придется переписать его следующим образом:
int main()
{
calculation o1;
o1.getValue();
o1.radians();
o1.cosf(a); //Function uses an undeclared variable
o1.output();
}
Во-вторых, проблема с выводом состоит в том, что в calculation::output()
вы используете локальную неинициализированную переменную a
, которую вы используете для вычисления cosf
. В C ++ есть правила, определяющие, как и если переменные инициализируются, если им не предоставляется начальное значение, но они сложны, и, честно говоря, легче просто всегда давать им (разумное) начальное значение. Я предполагаю, что переменная x
в классе calculation
представляет радианы? В этом случае вы должны передать в функцию переменную объекта x
. Поскольку это функция-член, у вас есть доступ к ее закрытым членам, и вы можете просто ссылаться на x. Вы также дважды вызываете cosf()
: один раз в основной части программы (где вы игнорируете его вывод) и один раз в output()
- это желаемая функция? Более того, в output()
ваша функция cosf()
возвращает double
, но вы назначаете его float
, что означает потенциальную потерю точности.
В-третьих, в вашей функции getValue()
вы читаете в x
в качестве углов, но затем в функции radians()
вы перезаписываете значение в градусах радианами. Это не рекомендуется - как узнать в любой момент времени, содержит ли ваша переменная значение в градусах или радианах? Я бы также назвал ваши переменные по-другому - зачем называть градусы x
, а точность n
? Просто позвоните им degrees
и precision
. Это делает ваш код более понятным для чтения без необходимости углубляться в функции, чтобы понять, что этим переменным назначены.
Если вы хотите продолжать использовать этот код, вы можете изменить функцию вывода на это, предполагая, что x содержит радианы, а go оттуда.
void calculation::output() {
double cosx = cosf(x); //This is the calculation object variable that holds the radians
cout << "cosine of the angle will be: " << cosx;
}
Обычно для того, что вы пытаясь это сделать, я не вижу необходимости в объектно-ориентированном подходе. Вместо этого вы могли бы написать несколько бесплатных функций, которые принимают углы и возвращают радианы, и функцию cosf, которая принимает радианы и возвращает любую сумму, равную et c.