Kezdőoldal » Számítástechnika » Programozás » C++-ban hogyan lehet egy...

C++-ban hogyan lehet egy mátrix sorait összeadni és külön vektorban tárolni?

Figyelt kérdés

Elakadtam egy feladatban és ahhoz kérnék szépen segítséget. Készítettem már egy kódot is, de az mindig rosszúl számol és fogalmam sincs hol van a hiba. Van esetleg valakinek ötlete?


Ez lenne a kód:


vector<vector<int> > v;


int n;

int m;



cout << "Kerem a matrix sorszamat" << endl;

cin >> n;

cout << "Kerem a matrix oszlopszamat " << endl;

cin >> m;

v.resize(n);

v[0].resize(m);

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

{

v[i].resize(m);

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


{

cin >> v[i][j];

}

}


for(int i = 0; i < v.size(); i++)

{

for(int j = 0; j < v[i].size(); ++j )

{

cout << v[i][j] << " ";

}

cout << endl;

}


int sorosszeg[n];

sorosszeg[0]=0;


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

{

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

{

sorosszeg[i]=sorosszeg[0]+v[i][j];

}

}


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

{

cout << ""<< endl;

cout << sorosszeg[i] << " ";

}


Köszönöm szépen előre is! 15/L



2015. ápr. 7. 15:27
 1/6 anonim ***** válasza:

sorosszeg[i]=sorosszeg[0]+v[i][j];

Semmi sem furcsa?

Illetve nem ártana minden elemét kinullázni, nem csak az elsőt.

Plusz van pár fölösleges sor a kódban.

2015. ápr. 7. 15:35
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
Azt sejtem, hogy pont azzal lesz a baj, mert egy 2x2-es mátrixnál még jól kiszámolja a sorokat és berakja őket a vektorba, de egy nagyobbnál már félreszámol. És hol vannak még felesleges sorok? És hol kéne még kinulláznom az elemeket? Bocsánat, még csak tanulom a programozást eléggé béna vagyok benne ^^"
2015. ápr. 7. 15:52
 3/6 anonim ***** válasza:

Hát példának okáért nullázod a sorososszeg vektor 0. Elemét, de azt sima tömbként definiáltad és futásidőben deklarálod, de nem foglalsz neki helyet. Vagy malloc/ free-vel foglald le/ szabadítsd fel a helyet neki vagy azt is vectornak hozd létre. Előbbi eset:

int sorososszeg[]=(int) malloc(m* sizeof(*int));

..... Elvégzed a tömbműveletet, majd ha már nem használod:

free(sorososszeg);

Persze ne felejtsd includolni a

cstring headert.

És persze ne a sorosooszeg 0 elemét összegezd hanem minden i.-et.

Vagy a másik lehetőség:

vector<int> sorososszeg;

sorososszeg.resize(m);

... Folytatod a programot

2015. ápr. 7. 20:58
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
Köszönöm szépen így már sikerült :)
2015. ápr. 7. 21:13
 5/6 anonim ***** válasza:

C++-ban ne mallocozzunk már... Minek?

new...

2015. ápr. 7. 21:26
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Egyébként meg ha a stacken hozza létre, fölösleges a heapen, az pont jó volt úgy, ahogy volt.
2015. ápr. 7. 21:28
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!