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

Код вызвал срабатывание точки останова - C++

Восстановить пароль Регистрация
 
Бофор
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 2
22.11.2015, 19:30     Код вызвал срабатывание точки останова #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
// AVal - массив анализируемых данных, Nvl - длина массива должна быть кратна степени 2.
// FTvl - массив полученных значений, Nft - длина массива должна быть равна Nvl.
 
const double TwoPi = 6.283185307179586;
#include <cmath> 
#include <iostream>
#include <iostream>
#include <fstream>
using namespace std;
 
void FFT(double *AVal, double *FTvl, int Nvl, int Nft) {
    int i, j, n, m, Mmax, Istp;
    double Tmpr, Tmpi, Wtmp, Theta;
    double Wpr, Wpi, Wr, Wi;
    double *Tmvl;
 
    n = Nvl * 2; Tmvl = new double[n];
 
    for (i = 0; i < Nvl; i++) {
        j = i * 2; Tmvl[j] = 0; Tmvl[j + 1] = AVal[i];
    }
 
    i = 1; j = 1;
    while (i < n) {
        if (j > i) {
            Tmpr = Tmvl[i]; Tmvl[i] = Tmvl[j]; Tmvl[j] = Tmpr;
            Tmpr = Tmvl[i + 1]; Tmvl[i + 1] = Tmvl[j + 1]; Tmvl[j + 1] = Tmpr;
        }
        i = i + 2; m = Nvl;
        while ((m >= 2) && (j > m)) {
            j = j - m; m = m >> 1;
        }
        j = j + m;
    }
 
    Mmax = 2;
    while (n > Mmax) {
        Theta = -TwoPi / Mmax; Wpi = sin(Theta);
        Wtmp = sin(Theta / 2); Wpr = Wtmp * Wtmp * 2;
        Istp = Mmax * 2; Wr = 1; Wi = 0; m = 1;
 
        while (m < Mmax) {
            i = m; m = m + 2; Tmpr = Wr; Tmpi = Wi;
            Wr = Wr - Tmpr * Wpr - Tmpi * Wpi;
            Wi = Wi + Tmpr * Wpi - Tmpi * Wpr;
 
            while (i < n) {
                j = i + Mmax;
                Tmpr = Wr * Tmvl[j] - Wi * Tmvl[j - 1];
                Tmpi = Wi * Tmvl[j] + Wr * Tmvl[j - 1];
 
                Tmvl[j] = Tmvl[i] - Tmpr; Tmvl[j - 1] = Tmvl[i - 1] - Tmpi;
                Tmvl[i] = Tmvl[i] + Tmpr; Tmvl[i - 1] = Tmvl[i - 1] + Tmpi;
                i = i + Istp;
            }
        }
 
        Mmax = Istp;
    }
 
    for (i = 0; i < Nft; i++) {
        j = i * 2; FTvl[Nft - i - 1] = sqrt((Tmvl[j])*(Tmvl[j]) + (Tmvl[j + 1])*(Tmvl[j + 1]));
    }
 
    delete[] Tmvl;
}
int main()
{
    int Nvl;
    ofstream f;
    cin >> Nvl;
    double *AVal;
    AVal = new double[Nvl];
    for (int i = 0; i < Nvl; ++i) {
        int elem;
        cin >> elem;
        AVal[i] = elem;
    }
    int Nft = Nvl;
    double *FTvl;
    FTvl = new double[Nft];
    FFT(AVal, FTvl, Nvl, Nft);
    f.open("FF.txt");
    for (int i = 0; i < Nft; ++i)
        f << FTvl[i] << " ";
    f.close();
    cout << endl;
}
В чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2015, 19:30     Код вызвал срабатывание точки останова
Посмотрите здесь:

Динамический массив и строки и ошибка app4.exe вызвал срабатывание точки останова C++
C++ Ошибка (вызвали срабатывание точки останова)
C++ .exe вызвал срабатывание точки останова
Delete [] "вызвал срабатывание точки останова" C++
C++ Вылетает "Вызвал срабатывание точки останова" после закрытия консоли
Выползает такая ошибка "test.exe вызвал срабатывание точки останова." C++
" *.exe вызвал срабатывание точки останова " при закрытии консоли C++
C++ .exe вызвал срабатывание точки останова (работаем с выделением памяти)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Почтальон
фрилансим
 Аватар для Почтальон
275 / 201 / 28
Регистрация: 22.03.2015
Сообщений: 1,588
Завершенные тесты: 1
22.11.2015, 19:54     Код вызвал срабатывание точки останова #2
А где ставите точку ? У вас алгоритм не использует ветвления, чего хотите добиться ?
Бофор
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 2
23.11.2015, 11:23  [ТС]     Код вызвал срабатывание точки останова #3
Это алгоритм вычисления модуля спектра действительного массива чисел на основе реализации быстрого преобразования Фурье. Ошибку выдаёт 65 строчке
Yandex
Объявления
23.11.2015, 11:23     Код вызвал срабатывание точки останова
Ответ Создать тему
Опции темы

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