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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
#1

int и double - C++

14.09.2012, 22:25. Просмотров 508. Ответов 2
Метки нет (Все метки)

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*
C++ LONG VS DOUBLE / INT VS FLOAT
C++ Shot int b long double
Преобразовать 2 числа int в 1 число float(double) | double int1.int2 C++
Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5411 / 4807 / 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
Ответ Создать тему
Опции темы

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