Kezdőoldal » Számítástechnika » Programozás » Egyszerű kód, mit rontok el...

Egyszerű kód, mit rontok el (cpp)?

Figyelt kérdés

Be kellene olvasni fájlból az alábbi adatokat egy 2D-s vektorba (t-be):


11 4 (ezeket nem kell beletenni, csak megadja az oszlopok és sorok számát)

1 2 2 3 4 5 6 7 8 9 9

1 2 4 0 0 0 1 2 3 4 5

0 0 0 0 0 0 2 0 0 1 0

3 4 5 -1 -10 -14 -5 -6 3 2 1


Eddig ilyen a kódom:


ifstream f("proba.txt");

int x, y;

f>>x>>y;

vector<vector <int > > t;

vector<vector<int> > vec(x, vector<int>(y,0));


for (int i=0; i<y; i++)

{

for (int j=0; j<x; j++)

{

f >> vec[i][j];

}

}

t = vec;


A program megcsinálja a beolvasást, csak nem return 0-t dob, hanem ezt:

Process returned -1073741819 (0xC0000005)

Mit rontok el?:(


2019. ápr. 12. 19:23
 1/2 anonim ***** válasza:

Ez memory overflow. Az a gond, hogy a vektorodnak x sora és y oszlopa van.

A vektorod elemeit így éred el: v[sor][oszlop].

Na most neked az első forban y-ig mennek az értékek, a másodikban meg csak x-ig. E miatt olyan helyre próbálsz írni a memóriában, ami nincs lefoglalva. E miatt van a hibakód.

Megoldás: első for x-ig menjen, második y-ig.

2019. ápr. 12. 19:48
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

Biztos hogy kell neked vektor ide? Nem véletlenül van meg, hány sor és hány oszlop. Vectorba akkor is tudnál olvasni, ha nincs megadva. Egy sima tömb nem elég?

int tomb[][]=new int[x][y];

2019. ápr. 13. 00:10
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!