C++ azt írja, Process terminated with status -1073741571. Mi legyen ezzel?
#include <iostream>
#include <fstream>
#include <cmath>
#define N 358
using namespace std;
int main()
{
ofstream fout("pp9.dat");
double L = 2, x[N+1], b[N+1], A[N+1][N+1], B[N+1][N+2];
for (int i=-N; i<=N; i++)
{
x[i] = L*i/(2*N);
}
for (int j=-N; j<N; j++)
{
x[j] = j*1.0/N+1/(2*N*1.0);
}
for (int i=1; i<=N; i++)
{
for (int j=1; j<=N; j++)
{
A[i][j] = (i-j+0.5)/(abs((i-j+0.5)*(i-j+0.5)*(i-j+0.5)))+(i+j-0.5)/(abs((i+j-0.5)*(i+j-0.5)*(i+j-0.5)));
A[N][j] = 1;
}
}
for (int i=1; i<=N; i++)
{
b[i] = 0;
b[N] = 1;
}
for (int i=1; i<=N; i++)
{
for (int j=1; j<=N; j++)
{
B[i][j] = A[i][j];
B[i][N+1] = b[i];
}
}
int k = 1;
while (k<=N)
{
double p, r;
for (int m=1; m<=N; m++)
{
p = B[k][k];
r = B[m][k]/B[k][k];
for (int n=1; n<=N+1; n++)
{
if (m==k)
B[m][n] /= p;
else
B[m][n] -= B[k][n]*r;
}
}
k++;
}
for (int i=1; i<=N; i++)
{
fout << x[i] << " " << B[i][N+1] << endl;
}
system("C:\\Users\\User\\Desktop\\qtgrace_windows_binary_024\\bin\\qtgrace.exe pp9.dat");
}
Amint N nagyobb, mint 358, nem működik. Ötletek?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ötleteim:
1. Töltsd fel valami kódmegosztó oldalra, mert ez az indentálatlan kaki elég nehezen emészthető
2. Adj valami értelmesebb nevet a változóidnak, hogy érteni is lehessen, mi milyen célt szolgál
3. Debugolj, derítsd ki pontosan melyik sornál fordul elő a hiba, és mi az. Használj valamilyen IDE-t, és tegyél breakpointokat a kódba.
4. Szűntesd meg a hibát.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Elég fura, hogy az x tömb mínusz 358. elemét akarod írni.
A megadott szám egyébként hexa C00000FD, ami stack overflow.
De tekintve hogy nem igazán van több függvényed ami hívogatná egymást, önmagát, így valószínű pont úgy sikrül felülírnod valamit hogy ezt okozza. De ez lényegtelen, az elsődleges hiba hogy x[-358]-ba írsz, na meg persze a többi negatív index...
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Igaza van #2-nek, a negatív index lehet a baj oka, az a bizonyos 358 meg talán csak egy véletlen helyzetből adódó érték. Nálam történetesen ezt írja ki N=63-nál:
terminate called after throwing an instance of 'std::ios_base::failure'
what(): basic_ios::clear
Aborted
------------------
(program exited with code: 134)
Press return to continue
64-től pedig ezt:
Segmentation fault
------------------
(program exited with code: 139)
Press return to continue
Nem, mintha ez a számomra bármit jelentene, de láthatólag nincs köze a 358-hoz.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!