Форум программистов, компьютерный форум CyberForum.ru

int и double - C++

Восстановить пароль Регистрация
 
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
14.09.2012, 22:25     int и double #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//---------------------------------------------------------------------------
 
#include "math.h"
#include <stdio.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
typedef double (*d1)(double,double);
typedef double (*d2)(double);
double s(double,double);
double y(double);
void Out_Rez (double(*)(double) ,double(*)(double,double),double,double,double,double);
 
 
 
 
void main()
{
double a,b,h,n;
puts("Input a,b,h,n");
scanf("%lf%lf%lf%lf", &a, &b, &h, &n);
puts("\n\t Rezalt \n");
Out_Rez (y,s,a,b,h,n);
puts("\n Press any key ... ");
getch();
}
 
double y( double x){
return(pow(x,2)/4.+x/2.+1.)*exp(x/2.);
}
double s(double x,double n) {
double k=1;
double s=1;
double kf=1;
while (k<n)
{
s+=(pow(k,2.)+1)*(pow((x/2.),k))/(kf*=k++);
}
return (s);
}
void Out_Rez (d2 y,d1 s,double a,double b,double h,double n) {
for(double x=a; x<=b; x+=h)
printf(" a = %5.2lf, b = %8.4lf,x = %8.6lf, h = %5.4lf, n = %5.5lf\n Y(x) = %8.6lf, S(x) = %8.6lf, |Y(x)-S(x)| = %8.6lf \n\n\n\n\n",a,b,x,h,n,s(x,n),y(x),fabs(y(x)-s(x,n)));
}
При типе данных в строке 38 при типе данных double все норм, но есть там написать int, то меняется значение функции y, ее результат становиться равным единице всегда! Как могут быть связаны результаты этих переменных????????? Они ведь даже в разных функциях и в функции y про функцию s ничего нет. Как такое получается что из-за типа данных одной функции меняется результат другой, при этом функция s передает при любом типе данных правильные значения с цифрами после запятой. Как вообще такое возможно???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2012, 22:25     int и double
Посмотрите здесь:

cannot convert from 'int *' to 'double *' C++
C++ double и int
2 int to double C++
Double, int , long double C++
float double int C++
перевести double в int C++
C++ double в int
C++ int* to double*

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.09.2012, 23:01     int и double #2
У вас здесь:
C++
1
printf(" a = %5.2lf, b = %8.4lf,x = %8.6lf, h = %5.4lf, n = %5.5lf\n Y(x) = %8.6lf, S(x) = %8.6lf, |Y(x)-S(x)| = %8.6lf \n\n\n\n\n",a,b,x,h,n,s(x,n),y(x),fabs(y(x)-s(x,n)));
порядок вывода перепутан. Поменяйте местами s(x,n) и y(x)
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
14.09.2012, 23:14  [ТС]     int и double #3
Спасибо, тупая ошибка, казалось уже каждую строчку перепроверил, а все равно ошибся.
Yandex
Объявления
14.09.2012, 23:14     int и double
Ответ Создать тему
Опции темы

Текущее время: 19:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru