parva-88
پنج شنبه 25 فروردین 1390, 15:40 عصر
من برنامه ی جمع 2 ماتریس اسپارس رو نوشتم و برای row va column های یکسان جواب میده ولی با اینکه برای اونا هم حالت زدم ولی تو اون حالتا run time err میده کسی میتونه مشکلشو رفع کنه؟
public void AddSparse(Sparce b)
{
int i, j, k;
i = j = k = 0;
if (Row != b.Row || Col != b.Col)
{
Console.WriteLine( "\n*** ERROR !!! Nemitavan In 2 Matris Ra Ba Ham Jame Kard ***");
}
Row = b.Row;
Col = b.Col;
while (i < Term && j < b.Term)
{
if (tarray[i].I < b.tarray[j].I || (tarray[i].I== b.tarray[j].I && tarray[i].J < b.tarray[j].J))
{
tarray[k].I= tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu;
}
else if (tarray[i].I > b.tarray[j].I || (tarray[i].I == b.tarray[j].I && tarray[i].J > b.tarray[j].J))
{
tarray[k].I = b.tarray[j].I;
tarray[k].J = b.tarray[j].J;
tarray[k++].Valu = b.tarray[j++].Valu;
}
else if ((tarray[i].I==tarray[j].I) && (tarray[i].J==tarray[j].J))
{
tarray[k].I = tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu + b.tarray[j++].Valu;
}
else
{
i++;
j++;
}
}
while (i < Term)///// moshkelesh chie?
{
tarray[k].I = tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu;
}
while (j < b.Term)//moshkelesh chie?
{
tarray[k].I = b.tarray[j].I;
tarray[k].J= b.tarray[j].J;
tarray[k++].Valu = b.tarray[j++].Valu;
}
Term= k;
}
public void AddSparse(Sparce b)
{
int i, j, k;
i = j = k = 0;
if (Row != b.Row || Col != b.Col)
{
Console.WriteLine( "\n*** ERROR !!! Nemitavan In 2 Matris Ra Ba Ham Jame Kard ***");
}
Row = b.Row;
Col = b.Col;
while (i < Term && j < b.Term)
{
if (tarray[i].I < b.tarray[j].I || (tarray[i].I== b.tarray[j].I && tarray[i].J < b.tarray[j].J))
{
tarray[k].I= tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu;
}
else if (tarray[i].I > b.tarray[j].I || (tarray[i].I == b.tarray[j].I && tarray[i].J > b.tarray[j].J))
{
tarray[k].I = b.tarray[j].I;
tarray[k].J = b.tarray[j].J;
tarray[k++].Valu = b.tarray[j++].Valu;
}
else if ((tarray[i].I==tarray[j].I) && (tarray[i].J==tarray[j].J))
{
tarray[k].I = tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu + b.tarray[j++].Valu;
}
else
{
i++;
j++;
}
}
while (i < Term)///// moshkelesh chie?
{
tarray[k].I = tarray[i].I;
tarray[k].J = tarray[i].J;
tarray[k++].Valu = tarray[i++].Valu;
}
while (j < b.Term)//moshkelesh chie?
{
tarray[k].I = b.tarray[j].I;
tarray[k].J= b.tarray[j].J;
tarray[k++].Valu = b.tarray[j++].Valu;
}
Term= k;
}