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

eror - C++

Восстановить пароль Регистрация
 
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
21.02.2011, 22:47     eror #1
Подскажите пожалуйста, кто-нибудь сталкивался с такой ошибкой

operands of * have illegal types `double' and `pointer to struct SimStruct_tag'

как с ней бороться? из-за чего она возникает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2011, 22:47     eror
Посмотрите здесь:

linker eror C++ Builder
EROR Pascal
FATAL EROR Cannot initialize renderer Windows 7
CPU Fan Eror!
eror msvcr100.dll
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
21.02.2011, 22:48     eror #2
выложите код
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
21.02.2011, 23:09  [ТС]     eror #3
Ругается на строки, 49, 57, 58, 59
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
static void mdlDerivatives(SimStruct *S)
{
    real_T            *dx   = ssGetdX(S);
    real_T            *x    = ssGetContStates(S);
    InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
    time_T dt=ssGetFixedStepSize(S);
    
    /* -------------------------------------------------------------------------------------------------------------------------------------------------------
 Vspomogateln formuly---------------------------------------------------------------------------------------------------------------------*/
 
double k=x[16]+tan(x[12])*x[15];
double l=x[0]-x[15];
 
double alfa=x[12]-(-atan2(k,l));
double s=(-x[17])/(x[0]*sqrt(1-(2*x[15])/x[0]))+sin(x[13])*((1/(sqrt(1-(2*x[15])/x[0])))-1);
double betta=x[13]-asin(s);
 
double Vx=x[0]*cos(x[12])*cos(x[13])-x[15];
double Vy=(-x[0])*sin(x[12])*cos(x[13])-x[16];
double Vz=x[0]*sin(x[13])-x[17];
double V=sqrt(pow(Vx,2)+pow(Vy,2)+pow(Vz,2));//vozdushn. ckorost'
 
double N=pow(sin(U(0)),2);//oboroty
double roH=ro0*(1-1/pow(10,5)*x[10]-(1/pow(10,9)*pow(x[10],2)));        
double delta=0.8163*roH;
 
double P=Thrust(V,x[10],N)*pow(sin(U(0)),2)*delta;
 
double q=(roH*pow(V,2))/2;
 
 
double mxotbetta=(-0.1384)*betta;
double mxotalfabetta=(-0.188)*alfa*betta;
double mxotdeltarn=(-0.0317)*U(3);
double mxotdeltae=(-0.089)*U(2);
double mxomegay=(-0.077-(0.65*alfa));
double mx=mxotbetta+mxotalfabetta+mxotdeltarn+mxotdeltae+mxomegax*(x[3]*L/2*V)+mxomegay*(x[4]*L/2*V);
 
double myotbetta=(-0.063)*betta;
double myotalfabetta=(0.0939*alfa-0.253*pow(alfa,2))*betta;
double myotdeltarn=(-0.0905)*U(3);
double myomegax=(-0.0823)-0.295*alfa;
double my=myotbetta+myotalfabetta+myotdeltarn+myomegay*(x[4]*L/2*V)+myomegax*(x[3]*L/2*V)+myvintbetta*betta;
 
double mzotalfa=(-1.818*alfa)+19.57*(pow(alfa,3))-115.29*(pow(alfa,5));
double mzotdeltav=(-0.879)*U(1);
double mzotdeltarn=0.095*pow(U(3),2);
double deltayvinta=(ycmass-yvinta)/ba;
double mzottiagi=(P/(q*S*ba))*deltayvinta;
double mz0dvig=(-0.004)*deltayvinta;
//--------dalfa-------------------------
double dalfa = (alfa - alfa_old)/dt;
double alfa_old = alfa;
//--------------------------------------
double mz=mz0+mzotalfa+mzotdeltav+mzotdeltarn+mzomegaz*(x[5]*ba/V)+mzottiagi+mzvintalfa*alfa+mzdotalfa*(dalfa*ba/V)+mz0dvig;
 
double Mx=mx*q*S*L;
double My=my*q*S*L;
double Mz=mz*q*S*ba;
 
double Cyaotalfa=5.909*alfa-21.1038*pow(alfa,3);
double Cyaotdeltav=0.3636*U(1);
double Cya=Cya0+Cyaotalfa+Cyaotdeltav+Cyavintalfa*alfa;
 
double Czaotbetta=(-0.429)*betta;
double Czaotdeltarn=(-0.12178)*U(3);
double Czaotdeltae=(-0.026)*U(2);
double Cza=Czaotbetta+Czaotdeltarn+Czavintbetta*betta+Czaotdeltae;
 
 
 
double M=V/340; //!!!!!!!!!!!!
double K=Cya0+Cyaotalfa;
double J=K-Cyacxmin;
        
double delta_CxotV=0.000126*(55-V);
 
  
 double Cxinotalfa=0;
 double delta_CxotH=0;
 double Cxinotbetta=0;
 double Cxa=0;
 double X=0;
 double Y=0;
 double Z=0;
 double G=0;
 
 
 
if (alfa>=(-0.14)&&alfa<=0.209)
  Cxinotalfa=(ny*pow(J,2));
 else if (alfa>=0.209&&alfa<=0.279)
   Cxinotalfa=2.39197-3.391*K+1.25416*pow(K,2);
 else if (alfa>=0.279&&alfa<=0.349)
   Cxinotalfa=10.1417-12.213*K+3.7399*pow(K,2);
else Cxinotalfa=0;
 
 
delta_CxotH=(0.757/pow(10,7)*x[10]+(0.6309/pow(10,11))*pow(x[10],2))/sqrt(M);
Cxinotbetta=0.098*pow(betta,2);        
Cxa=Cxamin+delta_Cxnadstroec+delta_CxotV+1.1*Cxinotalfa+delta_Cxdvig+delta_CxotH+Cyavintalfa*pow(alfa,2)+0.221*alfa*U(1)+0.072*pow(U(1),2)+Cxinotbetta+0.12178*pow(U(3),2)+0.3*pow(U(2),2)-Czavintbetta*pow(betta,2);
X=Cxa*q*S;
Y=Cya*q*S;
Z=Cza*q*S;
G=m*g;
 
/* -------------------------------------------------------------------------------------------------------------------------------------------------------
 -------------------------------------------------------------------------------------------------------------------------------------------------------*/
 
    /* xdot=Ax+Bu */
    dx[0]=(1/m)*((P+X)*cos(x[12])*cos(x[13])-Y*cos(x[13])*sin(x[12])+Z*sin(x[13])-G*sin(x[1]));
    dx[1]=(1/m*x[0])*((P+X)*(cos(x[12])*sin(x[14])+cos(x[12])*sin(x[13])*sin(x[14]))+Y*(cos(x[12])*cos(x[14])-sin(x[12])*sin(x[13])*sin(x[14]))-Z*cos(x[13])*sin(x[14])-G*cos(x[1]));
    dx[2]=(1/m*x[0]*cos(x[1]))*((P+X)*(sin(x[12])*sin(x[14])-cos(x[12])*sin(x[13])*cos(x[14]))+Y*(cos(x[12])*sin(x[14])+sin(x[12])*sin(x[13])*cos(x[14]))+Z*cos(x[13])*cos(x[14]));
    dx[3]=(Mx/Jx)-((Jz-Jy)*x[4]*x[5])/Jx;
    dx[4]=(My/Jy)-((Jx-Jz)*x[3]*x[5])/Jy;
    dx[5]=(Mz/Jz)-((Jy-Jx)*x[3]*x[4])/Jz;
    dx[6]=(x[4]*cos(x[8])-x[5]*sin(x[8]))/cos(x[7]);
    dx[7]=x[4]*sin(x[8])-x[5]*cos(x[8]);
    dx[8]=x[3]-(x[4]*cos(x[8])-x[5]*sin(x[8]))/tan(x[7]);
    dx[9]=x[0]*cos(x[1])*cos(x[2]);
    dx[10]=x[0]*cos(x[1]);
    dx[11]=-x[0]*cos(x[1])*sin(x[2]);
    dx[12]=x[5]-(x[3]*cos(x[12])-x[4]*sin(x[12]))*tan(x[13])+dx[2]*cos(x[1])*sin(x[8])*cos(x[13])-dx[1]*cos(x[13])*cos(x[8]);
    dx[13]=x[3]*sin(x[12])+x[4]*cos(x[12])-dx[2]*cos(x[1])*cos(x[8])-dx[1]*sin(x[8]);
    dx[14]=x[3]*cos(x[12])/cos(x[13])-x[4]*sin(x[12])/cos(x[13]);    
    dx[15]=0;
    dx[16]=0;
    dx[17]=0;
}
 
 
 
/* Function: mdlTerminate =====================================================
 * Abstract:
 *    No termination needed, but we are required to have this routine.
 */
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.02.2011, 23:18     eror #4
Homamilae, правильно, вы в этих строках в составе обычных арифметических выражений используете S, тип которой - указатель на тип SimStruct. Как же, по-вашему, можно обычный double на этот тип умножить?

Добавлено через 42 секунды
Возможно, вы перепутали S с дабловой переменной s, регистр в Си имеет значение.
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
21.02.2011, 23:28  [ТС]     eror #5
Да, действительно перепутала Спасибо, как раз то, что нужно
Yandex
Объявления
21.02.2011, 23:28     eror
Ответ Создать тему
Опции темы

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