![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]() ![]()
Сообщение
#1
|
|
![]() Продвинутый пользователь ![]() ![]() ![]() Группа: Posters Сообщений: 220 Регистрация: 17.8.2007 Из: Чебы Пользователь №: 8,614 ![]() |
задание : f=(m*tg(t)+|c*sin(t)|)^1/3
Помогите плиз чо в этой программе не так ? (после компиляции и выполнения, результат f=1 при любых значениях t) #include <stdlib.h> #include <iostream.h> #include <math.h> #include <conio.h> #pragma argsused int main(int argc, char* argv[]) {const double m=2.0,c=-1.0; double t,f; cout<<"Vvedite t "; cin>>t; f=pow(m*tan(t)+abs(c*sin(t)),(1/3)); cout<<"f ravno "<<f; getch(); } -------------------- В голове один мотив - ЧЕМПИОН ЛОКОМОТИВ
|
|
|
![]() |
Гость_mix_* |
![]()
Сообщение
#2
|
Guests ![]() |
У тебя тут ошибка "тоньше" чем я думал. Взял я и открыл все таки VC++ и поглядел, ошибка у тебя именно с преобразованиями типов, то что я написал выше тож было бы правдой еслиб pow имел только реализацию с целым вторым аргументом, типа
float pow(float, int) но как оказалось pow имеет реализацию и дробным показателем ![]() Штука вот в чем: 1 / 3 - означает не одну треть, это значит что ты делишь целую еденицу на целую тройку, и результат тож целый, а именно нуль. Сделай так pow(...., 0.33333333333) или лучше так pow(...., 1.0 / 3.0) Тут ещё есть момент со входными данными, первый аргумент у pow не должен быть отрицательным, почему не могу точно сказать, могу лиш предположить что вещественная степень высчитывается через что то, что не умеет хавать числа меньше нуля (например натуральный логарифм). Вобщем по эксперементируй, попробуй задать угол t = 12 и t = 45, увидишь что в первом случае первый аргумент отрицательный и ответ какая то хрень, а во втором все чики-пуки. |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 21st June 2025 - 00:20 |