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

Функции - C++

Восстановить пароль Регистрация
 
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
16.01.2011, 14:32     Функции #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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
//--------------- BEGINNING ----------------------------------------------------
 
double LinInter(double *xt,double *yt,const int n,double x)
{
 for (int i=1;i<n;i++)
   if((x>=xt[i-1])&&(x<=xt[i]))
   return yt[i-1]+(yt[i]-yt[i-1])*(x-xt[i-1])/(xt[i]-xt[i-1]);
}
//------------------------------------------------------------------------------
 
double Diff(double *x,double *y,const int n)
{
 for (int i=1;i<=n;i++)   
   return (y[i]-y[i-1])/(x[i]-x[i-1]);
}
//------------------------------------------------------------------------------
 
double Thrust(double V,double h,double n)
{
if(V<22.29||V>57.83||h<0||h>3000||n<2000||n>7000)return 100; //proverka !!!
int nn=11;
double VtH0[]={23.81,27.22,30.62,34.01,37.42,40.83,44.23,47.63,51.03,54.43,57.83};
double VtH1[]={23.55,26.91,30.28,33.64,37.00,40.37,43.73,47.10,50.46,53.83,57.19};
double VtH2[]={23.28,26.60,29.93,33.25,36.58,39.90,43.23,46.55,49.88,53.20,56.53};
double VtH3[]={22.99,26.28,29.56,32.85,36.14,39.42,42.71,45.99,49.28,52.56,55.84};
 
double Pp2,Pp3,Pp4,Pp5,Pp6,Pp7;
double P, dP,Vt;
//--------tiaga Pp2 pri 2000 oborot--------------------------------------------
 {
   double PtH0[]={-10.03,-14.14,-17.34,-19.89,-21.98,-23.73,-25.20,-26.47,-27.56,-28.52,-29.36};
   double PtH1[]={-8.11,-11.08,-13.68,-15.75,-17.45,-18.86,-20.06,-21.09,-21.97,-22.75,-23.44};
   double PtH2[]={-5.74,-8.34,-10.36,-11.98,-13.31,-14.41,-15.34,-16.14,-16.84,-17.45,-17.98};
   double PtH3[]={-4.05,-5.99,-7.50,-8.71,-9.70,-10.52,-11.22,-11.82,-12.34,-12.79,-13.19};
   if(h>=0&&h<1000)
   Pp2= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp2= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp2= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp2=0;
  }
//--------tiaga Pp3 pri 3000 oborot--------------------------------------------
  {
   double PtH0[]={8.60,0.47,-9.21,-16.95,-23.28,-28.56,-33.03,-36.86,-40.17,-43.08,-45.64};
   double PtH1[]={7.49,1.25,-7.12,-13.81,-19.29,-23.86,-27.72,-31.03,-33.90,-36.41,-38.62};
   double PtH2[]={6.44,1.80,-5.34,-11.06,-15.74,-19.64,-22.94,-25.77,-28.22,-30.37,-32.26};
   double PtH3[]={5.49,2.16,-3.90,-8.76,-12.72,-16.03,-18.83,-21.23,-23.31,-25.13,-26.73};
   if(h>=0&&h<1000)
   Pp3= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp3= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp3= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp3=0;
  }
//--------tiaga Pp4 pri 4000 oborot--------------------------------------------
  {
   double PtH0[]={13.43,12.21,10.59,7.30,-2.54,-10.73,-17.66,-23.61,-28.76,-33.26,-37.24};
   double PtH1[]={11.71,10.67,9.33,6.74,-1.22,-8.40,-14.47,-19.67,-24.19,-28.13,-31.62};
   double PtH2[]={10.10,9.21,8.12,6.10,-0.18,-6.39,-11.65,-16.16,-20.06,-23.48,-26.49};
   double PtH3[]={8.69,7.93,7.05,5.49,0.61,-4.76,-9.30,-13.19,-16.56,-19.52,-22.12};
   if(h>=0&&h<1000)
   Pp4= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp4= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp4= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp4=0;
  }
//--------tiaga Pp5 pri 5000 oborot--------------------------------------------
  {
   double PtH0[]={15.51,14.48,13.49,12.49,11.20,9.11,3.22,-4.38,-10.96,-16.73,-21.81};
   double PtH1[]={13.56,12.67,11.81,10.96,9.90,8.32,3.86,-2.82,-8.61,-13.68,-18.15};
   double PtH2[]={11.76,10.99,10.26,9.53,8.66,7.52,4.27,-1.55,-6.60,-11.02,-14.92};
   double PtH3[]={10.14,9.48,8.86,8.24,7.52,6.66,4.50,-0.55,-4.93,-8.77,-12.15};
   if(h>=0&&h<1000)
   Pp5= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp5= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp5= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp5=0;
  }
//--------tiaga Pp6 pri 6000 oborot--------------------------------------------
 {
   double PtH0[]={16.10,15.38,14.52,13.73,12.91,12.10,11.09,9.91,7.23,0.54,-5.37};
   double PtH1[]={14.07,13.46,12.72,12.03,11.33,10.63,9.79,8.80,6.72,1.47,-3.73};
   double PtH2[]={12.20,11.67,11.05,10.46,9.86,9.26,8.56,7.74,6.13,2.17,-2.38};
   double PtH3[]={10.53,10.08,9.56,9.05,8.55,8.04,7.46,6.78,5.57,2.66,-1.30};
   if(h>=0&&h<1000)
   Pp6= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp6= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp6= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp6=0;
  }
//--------tiaga Pp7 pri 7000 oborot--------------------------------------------
 {
   double PtH0[]={15.75,15.11,14.52,13.86,13.21,12.57,11.92,11.28,10.47,9.56,7.81};
   double PtH1[]={13.78,13.23,12.72,12.16,11.59,11.05,10.49,9.93,9.25,8.48,7.16};
   double PtH2[]={11.94,11.47,11.04,10.58,10.08,9.62,9.14,8.66,8.10,7.46,6.51};
   double PtH3[]={10.32,9.92,9.55,9.17,8.75,8.35,7.94,7.53,7.07,6.54,5.89};
   if(h>=0&&h<1000)
   Pp7= LinInter(VtH0,PtH0,nn,V)+(LinInter(VtH1,PtH1,nn,V)-LinInter(VtH0,PtH0,nn,V))*h/1000;
   else
   if(h>=1000&&h<2000)
   Pp7= LinInter(VtH1,PtH1,nn,V)+(LinInter(VtH2,PtH2,nn,V)-LinInter(VtH1,PtH1,nn,V))*(h-1000)/1000;
   else
   if(h>=2000&&h<=3000)
   Pp7= LinInter(VtH2,PtH2,nn,V)+(LinInter(VtH3,PtH3,nn,V)-LinInter(VtH2,PtH2,nn,V))*(h-2000)/1000;
   else Pp7=0;
  }
//------------------------------------------------------------------------------
 
if (n>=2000&&n<3000)
P=Pp2+(Pp3-Pp2)*(n-2000)/1000;
    if(h>=0&&h<1000);
    dP=Diff(P, dP,nn);
    else dP=0;
else
if (n>=3000&&n<4000)
return P=Pp3+(Pp4-Pp3)*(n-3000)/1000;
else
if (n>=4000&&n<5000)
return P=Pp4+(Pp5-Pp4)*(n-4000)/1000;   
else
if (n>=5000&&n<6000)
return P=Pp5+(Pp6-Pp5)*(n-5000)/1000;   
else
return P=Pp6+(Pp7-Pp6)*(n-6000)/1000;
    
}
//-------------------- END -----------------------------------------------------
Возникает ошибка error C2664: 'Diff' : cannot convert parameter 1 from 'double' to 'double *'
Не могу разобраться почему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2011, 14:32     Функции
Посмотрите здесь:

C++ Как из обыной функции вызвать функции член класса?
ввод данных в функции конструктора и использование их в перегруженой функции C++
C++ Заданы три функции. Определить, являются ли эти функции четными или нечетными
C++ Получить указатель из функции и использовать его в другой функции
C++ Определить конструкторы, функции-члены установки времени, функции получения часа, минуты и секунд
шаблон функции. Задачей функции является округление вышеуказанного вещественного числа с заданной точностью C++
Возврат 2 значений из функции с одним вызовом этой же функции C++
Написать блок-схему и программу вычисления функции на заданном промежутке и построить график этой функции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
16.01.2011, 15:09     Функции #2
Homamilae, вы при вызове функции Diff передаете вместо массива переменную типа double
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
16.01.2011, 15:21  [ТС]     Функции #3
Подскажите пожалуйста, как P преобразовать в массив?
Yandex
Объявления
16.01.2011, 15:21     Функции
Ответ Создать тему
Опции темы

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