我的代碼有問題。問題是即使我的程序一直運行,它仍然崩潰。我的IDE沒有讓我反感,也沒有指出爲什麼我的程序最終失敗了,所以我導致我相信有一些事情出界或者讓我的東西搞砸了。我查看了我的代碼,沒有任何內容出現在界限之外,所以我對這個問題完全感到困惑。數據管理錯誤C++
我正在使用我創建的頭文件,包含頭文件中的函數的文件以及主方法文件。該錯誤是包含我的函數的文件的結果。
我的類的字段是 大小 - 詮釋
低 - 詮釋
高 - 詮釋
windowSize - 詮釋
* filteredArray - INT
陣列[] - int
她e是頭文件:
#ifndef FILTER_HPP_
#define FILTER_HPP_
#include<iostream>
class Filter {
int size;
int high;
int low;
int windowSize;
int *filteredArray;
int array[];
public:
// Constructor
Filter(int windowSize);
// Methods
void randArrayGen();
int* randArrayGenRecurHelper(int arrayRecur[], int count);
void randArrayGenRecur();
void printArrays();
int hanning(int ar[]);
void hanningFilter();
void graphicArrays();
int getSize();
int getHigh();
int getLow();
};
#endif /* FILTER_HPP_ */
下面是代碼:
#include "Filter.hpp"
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <array>
#include <string>
#include <cstring>
using namespace std;
// Constructor
Filter::Filter(int num){
size = ((rand() % 25) + 25);
high = ((rand() % 6) + 5);
low = ((rand() % 6) + 5) * -1;
windowSize = num;
randArrayGen();
hanningFilter();
}
void Filter::randArrayGen(){
for(int i = 0; i < size;i++){
array[i] = (rand() % (high + low * -1)) + low;
}
}
int Filter::hanning(int ar[]){
int weightAvg;
if(windowSize == 3){
weightAvg = (ar[0] + ar[1] * 2 +ar[2])/4;
}
else if(windowSize == 5){
weightAvg = (ar[0] + ar[1] * 2 + ar[2] * 3 + ar[3] * 2 + ar[4])/9;
}
else if(windowSize == 7){
weightAvg = (ar[0] + ar[1] * 2 + ar[2] * 3 + ar[3] * 4 + ar[4] *3 + ar[5] * 2 + ar[6])/16;
}
else if(windowSize == 9){
weightAvg = (ar[0] + ar[1] * 2 +ar[2] * 3 + ar[3] * 4 + ar[4] * 5 + ar[5] * 4 + ar[6] * 3 + ar[7] * 2 + ar[8])/25;
}
else{
weightAvg = 0;
}
return weightAvg;
}
void Filter::hanningFilter(){
filteredArray = new int[size];
for(int i = 0; i < size; i++){
if(i - (windowSize/2) < 0 or i + (windowSize/2) > size - 1){
filteredArray[i] = 0;
}
else{
filteredArray[i] = hanning(&array[i-(windowSize/2)]);
}
}
}
int Filter::getHigh(){
return high;
}
int Filter::getLow(){
return low;
}
int Filter::getSize(){
return size;
}
如何分配'array'?特別是'new int [.. what size ..?]'行。 –
如果你給出了代碼應該做什麼的總結,那將是很好的。 – Lamar
我通過代碼檢查,發現我根本沒有分配它......但它仍然有效。 –