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

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;
}
 

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

بالا