IPB

Здравствуйте, гость ( Вход | Регистрация )

> Хелп, с++
L0K0motiv
сообщение Oct 6 2007, 16:36
Сообщение #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_*
сообщение Oct 7 2007, 10:53
Сообщение #2





Guests






У тебя тут ошибка "тоньше" чем я думал. Взял я и открыл все таки VC++ и поглядел, ошибка у тебя именно с преобразованиями типов, то что я написал выше тож было бы правдой еслиб pow имел только реализацию с целым вторым аргументом, типа
float pow(float, int)
но как оказалось pow имеет реализацию и дробным показателем smile.gif .

Штука вот в чем: 1 / 3 - означает не одну треть, это значит что ты делишь целую еденицу на целую тройку, и результат тож целый, а именно нуль. Сделай так
pow(...., 0.33333333333)
или лучше так
pow(...., 1.0 / 3.0)

Тут ещё есть момент со входными данными, первый аргумент у pow не должен быть отрицательным, почему не могу точно сказать, могу лиш предположить что вещественная степень высчитывается через что то, что не умеет хавать числа меньше нуля (например натуральный логарифм).

Вобщем по эксперементируй, попробуй задать угол t = 12 и t = 45, увидишь что в первом случае первый аргумент отрицательный и ответ какая то хрень, а во втором все чики-пуки.
Вернуться к началу страницы
 
+Цитировать сообщение

Сообщений в этой теме
- L0K0motiv   Хелп   Oct 6 2007, 16:36
- - Vitamin_C   #include <stdlib.h> int abs(int x); Возможн...   Oct 6 2007, 17:34
|- - L0K0motiv   Цитата(Vitamin_C @ Oct 6 2007, 18:34) #in...   Oct 6 2007, 18:01
- - Vitamin_C   #include <math.h> double fabs(double x);   Oct 6 2007, 17:37
- - Vitamin_C   В качестве аргумента функции int abs(int x) - цело...   Oct 6 2007, 19:58
- - mix   Цитата(L0K0motiv @ Oct 6 2007, 17:36) Пом...   Oct 6 2007, 20:48
- - L0K0motiv   Не подскажете тогда как по-другому реализовать кор...   Oct 6 2007, 20:55
- - Vitamin_C   Попробуй заменить f=pow(m*tan(t)+abs(c*sin(t)),(1...   Oct 6 2007, 21:05
- - L0K0motiv   И еще вопрос все C++ Builderы такие глючные ? (у м...   Oct 6 2007, 21:08
- - Vitamin_C   Visual C++ был Че получилось?   Oct 6 2007, 21:10
|- - L0K0motiv   Цитата(Vitamin_C @ Oct 6 2007, 22:10) Че ...   Oct 6 2007, 21:12
- - Vitamin_C   Фуннкция объявлена как: #include <math.h> do...   Oct 6 2007, 21:15
|- - L0K0motiv   Цитата(Vitamin_C @ Oct 6 2007, 22:15) Фун...   Oct 6 2007, 21:21
- - L0K0motiv   В Borl. C++ Builder 6 2 версии pow : Prototype do...   Oct 6 2007, 21:24
- - Gobbs   Кодf=pow(m*tan(t)+abs(c*sin(t...   Oct 7 2007, 10:03
- - mix   У тебя тут ошибка "тоньше" чем я думал. ...   Oct 7 2007, 10:53
- - mix   блин, пожизни пока я пишу ответ кто нить уже все н...   Oct 7 2007, 10:54
- - L0K0motiv   Спасибо всем !!!   Oct 7 2007, 12:51
- - L0K0motiv   Мда.............. Появилась еще одна проблемка. За...   Dec 23 2007, 21:23
- - Amp   Может и не совсем удачное. Первое, что в голову пр...   Dec 23 2007, 21:48
- - L0K0motiv   Amp, спасибо тебе. Пойду удивлю училку. )))) Прост...   Dec 23 2007, 23:22
- - aligatr-kil   Привет всем ! Помогите пожалуйсто переделать п...   Dec 23 2007, 23:30


ОтветитьСоздать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 21st June 2025 - 00:20