Member 14863149 Ответов: 2

Результаты расчета равны нулю


Я новичок в c++ и пытаюсь сделать некоторые вычисления, но радиус всегда возвращается как ноль, когда это не предполагается.

Это мой список переменных для моей программы:
const float PI = 3.14159; //PI is a constant
     double betaDegree = 0;
     double alpha = (90-((1/2)*betaDegree));
     double radians = (alpha*PI)/180;
     double slantDistance = 0;
     double chordLength = slantDistance * (sin(betaDegree)/sin(alpha));
     double radius = chordLength*(sin(90) - alpha)/(sin(alpha*2));


Это результат радиуса:
Радиус: 0 футов

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

Сначала я думал, что это мой порядок переменных, поэтому я изменил его, но это не помогло.

CPallini

Вы пытались вычислить результат с помощью карандаша и бумаги, используя те же самые входные данные?

Member 14863149

Я использовал 0 в качестве держателя места для пользовательского ввода, который происходит позже в программе; вот остальная часть кода;

cout<<"введите бета в градусах: ";
cin>>betaDegree;
cout<<"введите наклонное расстояние (футов) ";
cin>>slantDistance;
соиь<&ЛТ;"Бета: "на<

Richard MacCutchan

Ну, если это произойдет позже, то он не будет использоваться в качестве входных данных для расчета. Пожалуйста, отредактируйте вопрос и покажите весь код, который используется для получения ответа.

2 Ответов

Рейтинг:
1

OriginalGriff

Цитата:
Я использовал 0 в качестве держателя места, чтобы позже быть замененным пользовательским вводом, извините, что не включил его в орингинальный вопрос; остальная часть кода находится ниже, где он приводит к radius =0.

cout<<"Enter beta in degrees: ";
cin>>betaDegree;
cout<<"Enter the slant distance (feet) ";
cin>>slantDistance;
cout<<"Beta: "

Затем покажите нам, какой код вы на самом деле тестируете - показывая нам что-то совсем другое, мы не можем сказать, что вы на самом деле делаете!

Другая проблема заключается в том, что вы используете неправильные постоянные значения.
double alpha = (90 - ((1 / 2) * betaDegree));
Всегда будет давать вам alpha значение 90, потому что 1/2 равно 0, поэтому значение betaDegree игнорируется.
Это потому что 1 и 2 являются integer константы, поэтому деление всегда дает целочисленный результат - ноль.
Если вам нужны значения с плавающей запятой в качестве констант, используйте значения с плавающей запятой:
double alpha = (90.0 - ((1.0 / 2.0) * betaDegree));
"Плавающие" 90 градусов не являются строго необходимыми, но это хорошая практика в любом случае.
И не смешивайтесь float и double ценности, если только вы действительно не должны:
const float PI = 3.14159;
Должно быть
const double PI = 3.14159;
если вы собираетесь использовать полноразмерные значения для всего остального.


Рейтинг:
0

OriginalGriff

Хм.

double slantDistance = 0;
double chordLength = slantDistance * (sin(betaDegree)/sin(alpha));
double radius = chordLength*(sin(90) - alpha)/(sin(alpha*2));
Если slantDistance равно нулю, то длина хорды также будет равна нулю, так как 0 * anything = 0.
Если длина хорды равна нулю, то радиус будет равен нулю по той же причине.


CPallini

5.