C++-ban hogyan lehet egy mátrix sorait összeadni és külön vektorban tárolni?
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
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.
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
C++-ban ne mallocozzunk már... Minek?
new...
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!