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

Почему равно нулю? - C++

Восстановить пароль Регистрация
 
 
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 13:56     Почему равно нулю? #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
#include <iostream>
#include <vector>
using namespace std;
class SISO
{
  virtual float simulate(float u) = 0;
};
 
class ARX: public SISO
{
private:
    vector<float> B;
    vector<float> A;
    int k;
    int dB, dA;
    vector<float> y_buf;
    vector<float> u_buf;
 
public:
 
    ARX()
    {
        k = 1;              
 
        dB = B.size();     
        dA = A.size();     
        for (int i = 0; i < dA; i++)    
        {
            A.push_back(0.36);
            A.push_back(0.20);
        }
        for (int i = 0; i < dB+k; i++)  
        {
            B.push_back(0.36  );
            B.push_back(0.20);
        }
    }
 
    void printTF()
    {
        cout << "K = z^(-" << k << ")*( ";
        for (int i = 0; i < B.size(); i++)
        {
            printf("%+.2fz^(%d) ", B[i], -i);
        }
        cout << ") / ( ";
        for (int i = 0; i < A.size(); i++)
        {
            printf("%+.2fz^(%d) ", A[i], -i);
        }
        cout << ")" << endl;
    };
 
    float simulate(float u)
    {
        float y = 0;
       
 
        
 
        for (int i = 1; i < dA; i++)   
        {
            y -= A[i] * y_buf.at(y_buf.size()-i);
           
        }
        for (int i = 0; i < dB; i++)    
        {
            y += B[i] * u_buf.at(u_buf.size()-k - i);
           
        }
        cout << "y = " << y << endl;
 
        return y;
    }
   
};
 
 
int main()
{
    
    ARX ols;
    ols.printTF();          
    ols.simulate(0);
    for (int i = 0; i < 40; i++)
        ols.simulate(1);   
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2016, 13:56     Почему равно нулю?
Посмотрите здесь:

Из заданой марицы A(N,N)удалить строку и столбец, в которых находяться первый элемент, равно нулю. C++
C++ Время выполнения программы равно нулю
C++ Определить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем указанный символ
Выведите массив на экран и найдите количество элементов, значение которых равно нулю C++
C++ Остановить цикл ввода последовательности, если введенное значение равно нулю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HenryDukart
 Аватар для HenryDukart
100 / 100 / 28
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
04.07.2016, 14:01     Почему равно нулю? #2
помогите плиз,

так у вас же в конструкторе

C++
1
2
        dB = B.size();
        dA = A.size();
получают значения 0, поэтому никакие циклы и не выполняются.
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:06  [ТС]     Почему равно нулю? #3
а надо в скобочку написать число?
HenryDukart
 Аватар для HenryDukart
100 / 100 / 28
Регистрация: 05.10.2013
Сообщений: 400
Завершенные тесты: 2
04.07.2016, 14:07     Почему равно нулю? #4
помогите плиз, да нет, не надо. Метод size() не принимает никаких аргументов.
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:11  [ТС]     Почему равно нулю? #5
ЭМММ а что сделать чтобы оно не было равно нулю?

Добавлено через 42 секунды
сорри не тот смайл

Добавлено через 10 секунд
сорри не тот смайл
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 14:25     Почему равно нулю? #6
Насколько я понимаю, вот здесь:
C++ (Qt)
1
2
dA = A.size(); 
dB = B.size();
Вы не задаете никак dA и dB, потому что размер vector A и vector B равен нулю. Поэтому просто задайте размер по-нормальному и тогда циклы будут выполняться
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:33  [ТС]     Почему равно нулю? #7
А как задавать размер?Я просто в этом вообще не разбираюсь
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 14:39     Почему равно нулю? #8
Ну например так,

C++ (Qt)
1
vector<float> B(10);
и тогда размер будет равен 10
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:46  [ТС]     Почему равно нулю? #9
Я изменила вот так выводит такую ошибку. K=z^(-1)*()/()

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 ARX()
    {
        k = 1;              
 
        vector<float> B(10);    
        vector<float> A(5);    
        for (int i = 0; i < dA; i++)    
        {
            A.push_back(0.36);
            A.push_back(0.20);
        }
        for (int i = 0; i < dB+k; i++)  
        {
            B.push_back(0.36  );
            B.push_back(0.20);
        }
    }
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 14:52     Почему равно нулю? #10
помогите плиз, скиньте пожалуйста программу целиком с тегами, чтобы читать можно было
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:54  [ТС]     Почему равно нулю? #11
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
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
class SISO
{
  virtual float simulate(float u) = 0;
};
 
class ARX: public SISO
{
private:
    vector<float> B;
    vector<float> A;
    int k;
    int dB, dA;
    vector<float> y_buf;
    vector<float> u_buf;
 
public:
 
    ARX()
    {
        k = 1;              
 
        vector<float> B(10);    
        vector<float> A(5);    
        for (int i = 0; i < dA; i++)    
        {
            A.push_back(0.36);
            A.push_back(0.20);
        }
        for (int i = 0; i < dB+k; i++)  
        {
            B.push_back(0.36  );
            B.push_back(0.20);
        }
    }
 
    void printTF()
    {
        cout << "K = z^(-" << k << ")*( ";
        for (int i = 0; i < B.size(); i++)
        {
            printf("%+.2fz^(%d) ", B[i], -i);
        }
        cout << ") / ( ";
        for (int i = 0; i < A.size(); i++)
        {
            printf("%+.2fz^(%d) ", A[i], -i);
        }
        cout << ")" << endl;
    };
 
    float simulate(float u)
    {
        float y = 0;
       
 
        
 
        for (int i = 1; i < dA; i++)   
        {
            y -= A[i] * y_buf.at(y_buf.size()-i);
           
        }
        for (int i = 0; i < dB; i++)    
        {
            y += B[i] * u_buf.at(u_buf.size()-k - i);
           
        }
        cout << "y = " << y << endl;
 
        return y;
    }
   
};
 
 
int main()
{
    
    ARX ols;
    ols.printTF();          
    ols.simulate(0);
    for (int i = 0; i < 40; i++)
        ols.simulate(1);   
 
    system("pause");
    return 0;
}
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 14:56     Почему равно нулю? #12
помогите плиз, у меня все компилится
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 14:59  [ТС]     Почему равно нулю? #13
оно компилируется но результат не выводит,вместо этого какая то формула выходит

Добавлено через 1 минуту
и открывается окно прекращении работы программы
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 15:00     Почему равно нулю? #14
помогите плиз, а чему у Вас равно dA и dB?
Похоже, что программа заходит в цикл и не выходит
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 15:01  [ТС]     Почему равно нулю? #15
эмммм в смысле проблема в программе?
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 15:07     Почему равно нулю? #16
Вот Ваш цикл, где заполняются элементы массивов А и В.
счетчик цикла i, конец, когда i достигнет значения dA и dB. Где у вас инициализация этих переменных?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ARX()
    {
        k = 1;              
 
        vector<float> B(10);    
        vector<float> A(5);    
        for (int i = 0; i < dA; i++)    
        {
            A.push_back(0.36);
            A.push_back(0.20);
        }
        for (int i = 0; i < dB+k; i++)  
        {
            B.push_back(0.36  );
            B.push_back(0.20);
        }
    }
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 15:07  [ТС]     Почему равно нулю? #17
А равно 0,20
В равно 0,36
no_attention
27 / 27 / 13
Регистрация: 18.05.2016
Сообщений: 128
04.07.2016, 15:07     Почему равно нулю? #18
помогите плиз, Вы создаёте объект класса ARX, у которого есть вектор B и вектор A. Эти векторы ничем не заполнены. С помощью size() Вы берёте их размер. Поскольку они пока ничем не заполнены, размер у них 0, поэтому циклы и не запускаются.
Blitzor DDD
12 / 12 / 1
Регистрация: 17.08.2015
Сообщений: 439
04.07.2016, 15:10     Почему равно нулю? #19
помогите плиз, видите этот цикл?

C++ (Qt)
1
2
3
4
5
 for (int i = 0; i < dA; i++)    
        {
            A.push_back(0.36);
            A.push_back(0.20);
        }
чему равно dA?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2016, 15:11     Почему равно нулю?
Еще ссылки по теме:

C++ Почему 100/102 равно нулю?
Как правильно создать массив из номеров элементов, значения которых равно нулю C++
C++ Деление двух int равно нулю

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

Или воспользуйтесь поиском по форуму:
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 40
04.07.2016, 15:11  [ТС]     Почему равно нулю? #20
инициализация переменных???

а надо приравнивать к числу как вы говорили: vector<float> B(0.20); Так?
Yandex
Объявления
04.07.2016, 15:11     Почему равно нулю?
Ответ Создать тему
Опции темы

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