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

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

Войти
Регистрация
Восстановить пароль
 
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
#1

eror - C++

21.02.2011, 22:47. Просмотров 375. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста, кто-нибудь сталкивался с такой ошибкой

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
Turbo Pascal При открытии программы на другом ПК возникла ошибка Eror 15: file not found
Графика, Eror 15 Turbo Pascal
FATAL EROR Cannot initialize renderer Windows 7
Run-time Eror 424 Object Required Visual Basic
CPU Fan Eror!
eror msvcr100.dll
Не запускается ПК. Ошибка "Bios rom checksum eror keyboard eror or no keyboard present" BIOS
1С 1C 8.x Ошибка при запуске 1С Runtime Eror
Pascal Eror 205: Floating point overflow

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 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++
4949 / 3025 / 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
Ответ Создать тему
Опции темы

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