برنامه جمع دو ماتریس اسپارس

beroozresani

New Member
سلام. این برنامه جمع دو ماتریس اسپارسه. درست هم هست. ولی کسی میتونه قسمت تابع سام رو واسم تغییر بده؟
ممنون:rose:
#include <iostream>
#include <conio.h>
using namespace std;
void sum(int S1[][3] , int S2[][3] , int C[][3])
{
int k=1,found;
if (S1[0][0]!=S2[0][0] && S1[0][1]!=S2[0][1])
{
cout <<"Grade of these matrix dos'nt match!\n";
exit(1);
}
C[0][0]=S1[0][0];
C[0][1]=S2[0][1];
C[0][2]=0;
for (int i=1 ; i<=S1[0][2] ; i++)
for (int j=1 ; j<=S2[0][2] ; j++)
if (S1[0]==S2[j][0] && S1[1]==S2[j][1])
{
C[k][0]=S1[0];
C[k][1]=S1[1];
C[k][2]=S1[2]+S2[j][2];
k++;
break;
}
else
{
found=0;
for (int y=k-1 ; y>=1 ; y--)
if (C[y][0]==S1[0] && C[y][1]==S1[1])
found=1;
if (!found)
{
C[k][0]=S1[0];
C[k][1]=S1[1];
C[k][2]=S1[2];
k++;
}
found=0;
for (int y=k-1 ; y>=1 ; y--)
if (C[y][0]==S2[j][0] && C[y][1]==S2[j][1])
found=1;
if (!found)
{
C[k][0]=S2[j][0];
C[k][1]=S2[j][1];
C[k][2]=S2[j][2];
k++;
}
}
for (int i=1 ; i<6 ; i++)
if (C[2])
C[0][2]++;
}
int main()
{
int A[4][3]={{3,4,3},{1,2,5},{2,1,6},{0,3,1}},B[3][3]={{3,4,2},{1,2,4},{0,2,3}},C[6][3]={0};
sum(A , B , C);
for (int i=0 ; i<6 ; i++)
for (int j=0 ; j<3 ; j++)
cout <<C[j]<<endl;
return 0;
}
​
 

turtel

Member
سوال

من منظورتون را نمی فهمم تغییر در چه سمتی ؟؟؟
برنامه شما را هر جور بخواهیم می تونیم تغییر دهیم مثال در آرایه هایش دیگه چی ...؟
​
 

beroozresani

New Member
منظورم تغییر اسم آرایه ها یا تغییر جمله ای که چاپ میشه نیس. منظورم اینه که بجای هر دستور ،دستور معادلش نوشته بشه.
ممنون:rose:
 

majid1605

Active Member
منم هنوز متوجه نشدم .میشه بگید برای چی می خواید تغییرش بدید؟
 

turtel

Member
جمع دو ماتریس

سلام من معادل دستورات C++ را برای سی شارپ پیاده سازی کردم ولی بازم می گم من منظور شما را اینطور فهمیدم :امید که مفید باشد ::
using System;

public static class GlobalMembersNoname01
{
public static void sum(int[,] S1, int[,] S2, int[,] C)
{
int k = 1;
int found;
if (S1[0, 0] != S2[0, 0] && S1[0, 1] != S2[0, 1])
{
Console.Write("Grade of these matrix dos'nt match!\n");
Environment.Exit(1);
}
C[0, 0] = S1[0, 0];
C[0, 1] = S2[0, 1];
C[0, 2] = 0;
for (int i = 1 ; i <= S1[0, 2] ; i++)
for (int j = 1 ; j <= S2[0, 2] ; j++)
if (S1[i, 0] == S2[j, 0] && S1[i, 1] == S2[j, 1])
{
C[k, 0] = S1[i, 0];
C[k, 1] = S1[i, 1];
C[k, 2] = S1[i, 2] + S2[j, 2];
k++;
break;
}
else
{
found = 0;
for (int y = k - 1 ; y >= 1 ; y--)
if (C[y, 0] == S1[i, 0] && C[y, 1] == S1[i, 1])
found = 1;
if (found == 0)
{
C[k, 0] = S1[i, 0];
C[k, 1] = S1[i, 1];
C[k, 2] = S1[i, 2];
k++;
}
found = 0;
for (int y = k - 1 ; y >= 1 ; y--)
if (C[y, 0] == S2[j, 0] && C[y, 1] == S2[j, 1])
found = 1;
if (found == 0)
{
C[k, 0] = S2[j, 0];
C[k, 1] = S2[j, 1];
C[k, 2] = S2[j, 2];
k++;
}
}
for (int i = 1 ; i < 6 ; i++)
if (C[i, 2] != 0)
C[0, 2]++;
}
static int Main()
{
int[,] A = {{3,4,3},{1,2,5},{2,1,6},{0,3,1}};
int[,] B = {{3,4,2},{1,2,4},{0,2,3}};
int[,] C = {{0, 0, 0}};
GlobalMembersNoname01.sum(A, B, C);
for (int i = 0 ; i < 6 ; i++)
for (int j = 0 ; j < 3 ; j++)
{
Console.Write(C[i, j]);
Console.Write("\n");
}
return 0;
}
​
 

جدیدترین ارسال ها

بالا