Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
МАТВ
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 12
#1

Error C2109: для индекса требуется массив или указатель

26.03.2016, 14:46. Просмотров 318. Ответов 2
Метки нет (Все метки)

Есть код,делаю его в классы,вот выскочили ошибки,помогите исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
class PID
{
private: 
    double _Kp,_Ki,_Kd;
    double _U_max,_U_min;
public: 
    double k ;
    double U[250],Up[250],Ui[250],Ud[250],h,t,E_min,X_[250];    
    double oshi(double X,double X_1);
    PID(double Kp,double Ki,double Kd, double U_max, double U_min );
};
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
#include "StdAfx.h"
#include "PID.h"
 
PID::PID(double Kp,double Ki,double Kd, double U_max, double U_min )
{
 _Kp=Kp;
 _Ki=Ki;
 _Kd=Kd;
 _U_max=U_max;
 _U_min=U_min;
 
};
double PID::oshi(double X, double X_1)
{
    double E_1 = 1;
    double E=X-X_1; 
    if (E_1 > E_min)
    {
    X_[0] = E_min;
    }
else
    {
    X_[0] =  E_1;
    } 
 
    E[0] =X - X_[0]; 
 
    Up[0] = _Kp*E[0];   // Пропорциональная часть регулятора 
    Ui[0] = _Ki*h*E[0]; //интегральная часть регулятора
    Ud[0] = _Kd*((E[0] ) / h); //Дифференциальная часть регулятора
    U[0] = Up[0] + Ui[0] + Ud[0];  //ПИД
if(U[0] > 16)   // Ограничение ПИДа
    {
    U[0] = 16;
    }
if (U[0] < -16)   // Ограничение ПИДа 
    {
    U[0] = -16;
    }   
 
    for (int i=1; i<=k; i++){
        k = t / h;  
    Up[i] = _Kp*E[i];   // Пропорциональная часть регулятора 
    Ui[i] = Ui[(i - 1)] + _Ki*h*(E[i]); //интегральная часть регулятора
    Ud[i] = _Kd*E[i] - (E [(i- 1)] / h); //Дифференциальная часть регулятора
    U[i] = Up[i] + Ui[i] + Ud[i];          
if(U[i] >_U_max)   // Ограничение ПИДа
    {
    U[i] = Ui[(i - 1)];
    U[i] = _U_max;
    }
if (U[i] < _U_min)   // Ограничение ПИДа 
    {
    U[i] = Ui[(i - 1)];
    U[i] = _U_min;
}
    }
 
};
    
 
PID::~PID()
{
}
c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(27) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(29) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(30) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(31) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(44) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(45) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(46) : error C2109: для индекса требуется массив или указатель
1>c:\users\asus\documents\visual studio 2008\projects\consol\consol\pid.cpp(46) : error C2109: для индекса требуется массив или указатель
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2016, 14:46
Ответы с готовыми решениями:

Error C2109: для индекса требуется массив или указатель
Доброго времени суток! Будьте так добры помочь в данном вопросе, как сделать...

error C2109: для индекса требуется массив или указатель
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;windows.h&gt; #include...

error C2109: для индекса требуется массив или указатель.
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;ctime&gt; using...

Error C2109: для индекса требуется массив или указатель
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; int const max_widht=3; int const...

Error C2109: для индекса требуется массив или указатель (найти причины возникновения ошибки)
по условию я составил программу &quot;Дан одномерный массив А, состоящий из N...

2
pav1uxa
1855 / 1709 / 802
Регистрация: 23.01.2014
Сообщений: 6,082
Завершенные тесты: 1
26.03.2016, 15:34 #2
МАТВ, у Вас E это переменная типа double, а Вы обращаетесь как к массиву (E[0]).
1
МАТВ
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 12
26.03.2016, 15:46  [ТС] #3
О,исправил,спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2016, 15:46

Ошибка "error C2109: для индекса требуется массив или указатель"
Помогите, пожалуйста! Имеется программа: double f4 (double x) { double p,f;...

Найти причины и способы исправления ошибки "error C2109: для индекса требуется массив или указатель"
Добрый день! Подскажите пожалуйста, писала программу, но на протяжении всей...

Для индекса требуется массив или указатель
Вот весь код: #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;string&gt;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru