Ha egy ritka mátrixot ábrázolok egydimenzós tömbben, vagyis csak a nem nulla értékeket tárolom, és struktúrát használok az ábrázolásra, hogyan tudom összeadni a ritka matrixom (amit egydimenzios tombben tarolok) oszloapait (saját)?
A kód:
#include<iostream>
using namespace std;
const int nnmax = 50;
struct elem {
int sor, oszlop;
float ertek;
};
struct ritka {
elem tomb[nnmax];
int hanysor, hanyoszlop;
int nn; };
deklaráció: ritka mat;
A sajat oszlopainak az erteket...:)
peldaul a matrix (1 2 3 )
(4 5 6 )
(7 8 9 )
kulon tombbe adjam ossze az oszlopertekeket: pl:1+4+7 ,2+5+8 ,3+6+9
Hát akkor meg mi a gond?
Baromi egyszerű, végigmész a tömbön és összeadod az összegző tömb i. elemébe azokat az elemeket, ahol az oszlop koordináta i.
Csak annyi a megjegyzésem, hogy használhatnál vector-t tömb helyett és felesleges a mátrix méretére optimalizálni. Vázlatosan:
ritka mat; // inicializáld
float *sum = new float[mat.hanyoszlop]();
for(int i=0; i<mat.nn; i++) {
elem& e = mat.tomb[i];
sum[e.oszlop]+=e.ertek;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!