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

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

Войти
Регистрация
Восстановить пароль
 
 
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 41
#1

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

04.07.2016, 13:56. Просмотров 584. Ответов 29
Метки нет (Все метки)

Здравствуйте!У меня проблемы с кодом!Оно всегда равняется нулю,а должно к числу.Помогите пожалуйста

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;
}
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2016, 13:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему равно нулю? (C++):

Почему 100/102 равно нулю? - C++
Когда на С++ считаю 100/102 с использованием флоат и дубль, он мне выдает 0, хотя это делает 0,9803921568627451. Использовал лонг ,но...

Определить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем указанный символ - C++
Вот что нужно написать кодом: сравнить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем, например,...

Время выполнения программы равно нулю - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; int main() { clock_t start, end; float i; start =...

Деление двух int равно нулю - C++
делю 206 на 255 результат записываю во float, но переменная всегда имеет значение 0! почему? int Height = 206; int YMax = 255; ...

Остановить цикл ввода последовательности, если введенное значение равно нулю. - C++
В простую переменную последовательно вводятся числа. Окончание ввода 0. Сколько чисел больше своих соседей слева и справа. Вопрос в том как...

Выведите массив на экран и найдите количество элементов, значение которых равно нулю - C++
&quot;Данный двухмерный массив размерностью 5X4. Заполните его случайными числами с интервала -20 .. 20: 1. Выведите массив на экран и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HenryDukart
123 / 123 / 35
Регистрация: 05.10.2013
Сообщений: 457
Завершенные тесты: 2
04.07.2016, 14:01 #2
помогите плиз,

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

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

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

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

C++ (Qt)
1
vector<float> B(10);
и тогда размер будет равен 10
0
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 41
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);
        }
    }
0
Blitzor DDD
13 / 13 / 1
Регистрация: 17.08.2015
Сообщений: 460
04.07.2016, 14:52 #10
помогите плиз, скиньте пожалуйста программу целиком с тегами, чтобы читать можно было
0
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 41
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;
}
0
Blitzor DDD
13 / 13 / 1
Регистрация: 17.08.2015
Сообщений: 460
04.07.2016, 14:56 #12
помогите плиз, у меня все компилится
0
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 41
04.07.2016, 14:59  [ТС] #13
оно компилируется но результат не выводит,вместо этого какая то формула выходит

Добавлено через 1 минуту
и открывается окно прекращении работы программы
0
Blitzor DDD
13 / 13 / 1
Регистрация: 17.08.2015
Сообщений: 460
04.07.2016, 15:00 #14
помогите плиз, а чему у Вас равно dA и dB?
Похоже, что программа заходит в цикл и не выходит
0
помогите плиз
2 / 2 / 0
Регистрация: 14.05.2015
Сообщений: 41
04.07.2016, 15:01  [ТС] #15
эмммм в смысле проблема в программе?
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2016, 15:01
Привет! Вот еще темы с ответами:

Как правильно создать массив из номеров элементов, значения которых равно нулю - C++
Добрый день! Передо мной стоит следующая цель: создать новый массив из номеров элементов, значения которых равно нулю. Также интересует...

Из заданой марицы A(N,N)удалить строку и столбец, в которых находяться первый элемент, равно нулю. - C++
Из заданой марицы A(N,N)удалить строку и столбец, в которых находяться первый элемент, равно нулю. Полученою матрицу умножить. Элементы...

Почему произведение всегда равно 0? - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); srand(time(0)); const int...

Первый элемент массива равен 1 а остальные почему-то нулю - C++
Здраствуйте есть вопрос к задаче: дана программу реализовывающую вычисление последовательности Фиббоначи до определённого номера...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.07.2016, 15:01
Ответ Создать тему
Опции темы

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