Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 20:06   #1
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
Вопрос преобразование типов в Си

необходимо преобразовать типы результатов:
a = ∜((1.23)^3 log_10⁡3 )/((1.45)^(1/3) ch1) ;
b = sech ( 1/5 ( sh2 + ch2) );

e^√tha + ch b, a≤b;
y =
|a+b|, a>b
но результат работы моей проги:
Код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
double a, b, y;
clrscr();
printf("floating point\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%5.3f\n",a);
printf("b=%5.3f\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%5.3f\n",y);
printf("\n");

printf("A=float; B=float; Y=float\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%f\n",a);
printf("b=%f\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%f\n",y);
printf("\n");

printf("A=int; B=int; Y=float\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%5.3f\n",a);
printf("b=%5.3f\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%5.3f\n",y);
printf("\n");

printf("A=int; B=int; Y=int\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%d\n",a);
printf("b=%d\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%d\n",y);
       
getch();
}
почему-то получаются вот такими:
Код:
floating point

a=0.648
b=0.434
y=1.082

A=float; B=float; Y=float

a=0.648054
b=0.433700
y=1.081755

A=int; B=int; Y=float

a=0.648
b=0.434
y=1.082

A=int; B=int; Y=int

a=27623
b=10768
y=16504
помогите найти ошибку, плизззз
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 11.03.2009, 20:16   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Приведу пример для одного куска:
Код:
printf("A=int; B=int; Y=int\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%d\n",a);
printf("b=%d\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%d\n",y);
Вот тут:
Код:
printf("a=%d\n",a);
нужно приводить тип:
Код:
printf("a=%d\n",(int)a);
или
Код:
printf("a=%d\n",static_cast<int>(a));
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.03.2009, 20:58   #3
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

пасибки, получилось)) но как поспупить с плавающей точкой, т.е. первой частью проги??

и считает она не то,
Код:
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
результат получается от частного 1 на гиперболический косинус. Как исправить??
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 11.03.2009, 21:09   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
но как поспупить с плавающей точкой, т.е. первой частью проги??
Вы об этом:
Код:
printf("A=float; B=float; Y=float\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%f\n",(float)a);
printf("b=%f\n",(float)b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%f\n",(float)y);
printf("\n");
?

--------------
Цитата:
a = ∜((1.23)^3 log_10 3 )/((1.45)^(1/3) ch1) ;
У меня ощущение, что часть формулы потерялась. Я прав?

Цитата:
b = sech ( 1/5 ( sh2 + ch2) );
sech - это секанс? Если так, то он равен 1/cos
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.03.2009, 21:41   #5
HoOpe
Пользователь
 
Аватар для HoOpe
 
Регистрация: 09.03.2009
Сообщений: 52
По умолчанию

в требованиях написано, что результаты представить в форме целых и вещественных чисел с фиксированной и плавающей точкой, а в чем их различия???

и
Код:
а =( (1,23^3lg3)^(1/4)) / (1.45^(1/3)ch1)
   b=1/(ch(0.2(sh2+ch2)))
когда всё становится на свои места, выясняется, что это кладбище...
HoOpe вне форума Ответить с цитированием
Старый 11.03.2009, 21:58   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Фиксированная запятая, это так:
Код:
34.53535
Формат с плавающей запятой - это когда число записано в форме мантиссы и показателя.

Тогда второй кусок будет выглядеть так:
Код:
printf("A=float; B=float; Y=float\n");
printf("\n");
a=pow(1.23,(3/4))*pow(log(3),(1/4))/(pow(1.45,(-1/3))*cosh(1));
b=1/(cosh(0.2*(sinh(2)+cosh(2))));
printf("a=%e\n",a);
printf("b=%e\n",b);
if (a<=b) y=pow(2.78,pow((sinh(a))+cosh(b),(1/2)));
else y=fabs(a+b);
printf("y=%e\n",y);
printf("\n");
-------
Если я правильно понял формулу, то для a:
Код:
a= pow(pow(1.23,3*log10(3)),(1/4))/(pow(1.45,(1/3)*cosh(1)));
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование типов данных stepchild БД в Delphi 14 19.07.2009 21:45
Преобразование типов MAKEDON Общие вопросы C/C++ 3 02.03.2009 18:27
не соответствие типов amandra SQL, базы данных 6 30.06.2008 18:04
Преобразование типов Pronik Общие вопросы Delphi 2 12.06.2007 12:23