Kezdőoldal » Számítástechnika » Programozás » C++ azt írja, Process terminat...

C++ azt írja, Process terminated with status -1073741571. Mi legyen ezzel?

Figyelt kérdés

#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?



2019. máj. 13. 21:40
 1/5 anonim ***** válasza:

Ö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.

2019. máj. 13. 21:44
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
100%

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...

2019. máj. 13. 22:38
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:
Ezzel inkább semmi ne legyen.
2019. máj. 13. 22:52
Hasznos számodra ez a válasz?
 4/5 tabaki ***** válasza:

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.

2019. máj. 13. 23:17
Hasznos számodra ez a válasz?
 5/5 tabaki ***** válasza:
+ Ha a lehetetlen indexeléstől eltekintek is, nekem akkor is furcsa az első két ciklus. Először az x[] tömböt gondosan feltöltöd bizonyos lelkiismeretesen kalkulált számokkal, aztán, mielőtt ezek bármiféle szerepet könyöröghetnének ki maguknak a történetben, az utolsó tömbelem kivételével sutty, azonnal felülírod az egészet új, másképpen kiszámolt értékekkel. Ne legyen igazam, de megkockáztatom, hogy ez akár a nem tökéletesen letisztult gondolatmenet tünete is lehet.
2019. máj. 14. 00:02
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!