だからこんにちは。デバッグがスムーズに実行されている間に奇妙なプログラムがクラッシュする(Elipse C++)
私は大学で私のアルゴリズムの数学の授業のためのプログラムを書いていると私は、MinGWの6.3.0でEclipseのOxygen.1aリリース(4.7.1a)に勝利7(x64の)を使用しています。
私が構築し、それは窓が「Abgabe3.exeは動作を停止]をしかし、私は、プログラム全体をトラフステップと、それはエラーなしで終了し、デバッガおよびブレークポイントを使用して問題を発見しようとすると主張してcrahesプログラムを実行するたびに...
問題のある関数で使用されていないものはすべて取り除き、すべてを別々のファイルにコピーして、正確な問題が発生しました。 誰かが私の側で何が起こったかの手がかりを持っているかもしれません。 ^^
#include <math.h> /* pow, sqrt */
#include <iostream> /* cin, cout */
#include <new> /* new */
#include <string> /* string */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
using namespace std;
void NORM(double* res, double* x, int n){
res[0] = 0.0;
for(int i = 0; i < n; i++){
res[0] += pow(x[i], 2);
}
res[0] = sqrt(res[0]);
}
void initRand(double* x, int n){
srand (time(NULL) * rand());
for(int i = 0; i < n; i++){
x[i] = (((double) rand())/((double) RAND_MAX));
}
}
void createArray(double* &x, int n){
if (n > 0){
x = new double[n];
initRand(x, n);
}
}
void printArray(double* x, int n){
if (x != NULL){
cout<<"(\n";
for(int i = 0; i < n; i++){
if(i+1 == n) cout<<x[i];
else if ((i % 5) == 0) cout<<x[i];
else if (((i+1) % 5) == 0){
cout<<", "<<x[i]<<"\n";
}
else {
cout<<", "<<x[i];
}
}
cout<<"\n)\n";
}
else cout<<"\nError: pointer = NULL\n";
}
unsigned long long int bin(unsigned int n, unsigned int k){
unsigned long long res = 1;
if(k == 0) return 1;
else if(n >= k){
for(unsigned long long int i = 1; i <= k; i++){
res *= (n + 1 - i)/i;
}
}
else return 0;
return res;
}
void newArray(double** x, unsigned int v, unsigned int n){
for(unsigned int i = 0; i < v; i++){
double* ptr = x[i];
createArray(ptr,n);
x[i] = ptr;
}
}
void experiment(double** vektorArray){
unsigned int n = 10, v = 20;
cout<<"Dimension n = "<<n<<"\nAnzahl Versuche v = "<<v<<endl;
//Erstellen der Vektoren
cout<<"Erstellen - starte\n";
vektorArray = new double*[n];
newArray(vektorArray, v, n);
cout<<"Erstellen - fertig\n";
for(unsigned int i = 0; i < v; i++){
if(i%10 == 0) printArray(vektorArray[i], n);
}
}
int main(int argc, char** argv){
double** vektorArray = NULL;
experiment(vektorArray);
return 0;
}
無関係:乱数ジェネレータがシードされる前に乱数ジェネレータに乱数をシードするのは少し奇妙です。 'srand(time(NULL)* rand());'は ''ライブラリの使用がうまく行かないことをあなたにとっては大いに役立つと思います。 –
user4581301
無関係: 'pow'はpiのような狂気のようなものを計算するように設計されています。広場にそれを使用することは、大過剰です。あなたはたいていいつも 'x * x'の方が良いです。 – user4581301
時間をかけて播種するときに問題が発生しました(NULL)。ベクターだけが同じように生成され、この奇妙なsranを思いつきました。^^正方形を計算するためにpowを使用しません! :D – Tignite