Przykładowe dane:
Macierz wczytana z pliku:
10 50 0 0
50 97 0 0
0 0 92 0
0 0 0 21
Liczba elementów niezerowych:6
Macierz jest przechowywana w 3ch wektorach:
Wartosci niezerowe:
war =[ 10 50 50 97 92 21 ]
Kolumny w ktorych sie znajduja:
kol = [ 0 1 0 1 2 3 ]
Indeks pierwszego elementu w kolejnych wierszach:
w = [ 0 2 4 5 6 ]
tab1= [0 1 2 3]
chcialbym zrobić mnożenie macierzy przez wektor, a maciez przetrzymuje w postaci 3 wektorów.
znaczy musze znalezc sume mnożenia i-tego elementu z wektora war i wektora tab1[kol] i tak dla kazedego wiersza.
no i oczywiscie nie wychodzi.
w tym wypadku lw=4
int i, j, h;
double mnozenie[lw];
for (i = 0; i < lw; i++)
{
for (h = 0; h <= lw+1 ; h++)
{
for (j = w[h]; w[h + 1] - w[h]; j++)
{
mnozenie[i] += (war[j] * tab1[kol[j]]);
}
}
}
wynikiem jest: segmentation fault.
kiedy zmienie na h <= el, wynik to dziwne liczby.
z gory dziekuje za pomoc.