| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 348 人关注过本帖
标题:大家帮忙看看我写的矩阵求和,看看是不是对所有的情况都符合,或者有什么改 ...
只看楼主 加入收藏
独行wang
Rank: 1
等 级:新手上路
帖 子:6
专家分:8
注 册:2011-4-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
大家帮忙看看我写的矩阵求和,看看是不是对所有的情况都符合,或者有什么改进的!
#include"stdio.h"
typedef struct{
int data[50][50];
int m,n;
}matrix;
typedef int thmatrix[50][3];
void creat(matrix *s)
{
 int i,j,x;
 printf("请输入矩阵!\n");
  for(i=0;i<s->m;i++)
      for(j=0;j<s->n;j++)
      {
          scanf("%d",&x);
          s->data[i][j]=x;
      }
}
void print1(matrix *s)
{
int i,j;
printf("输出矩阵!\n");
 for(i=0;i<s->m;i++)
 {
   for(j=0;j<s->n;j++)
     printf("%-3d",s->data[i][j]);
     printf("\n");
 }
}
void print2(thmatrix A)
{
    int i,j;
    printf("输出转化为三元组的矩阵!\n");
    for(i=0;i<=A[0][2];i++)
    {
      for(j=0;j<3;j++)
        printf("%3d",A[i][j]);
        printf("\n");
    }

}
void change(matrix *s,thmatrix r)
{
 int i,j,k;
 k=1;
  for(i=0;i<s->m;i++)
    for(j=0;j<s->n;j++)
    {
     if(s->data[i][j]!=0)
     {
      r[k][0]=i;
      r[k][1]=j;
      r[k][2]=s->data[i][j];
      k++;
     }
   r[0][0]=s->m;
   r[0][1]=s->n;
   r[0][2]=k-1;
    }
}
void add(thmatrix B,thmatrix C,thmatrix A)
{
 int i,r,k,t;
 i=r=k=1;
  while(i<=B[0][2]&&r<=C[0][2])
  {
    if(B[i][0]==C[r][0])
    {
      if(B[i][1]==C[r][1])
      {
        t=B[i][2]+C[r][2];
        if(t!=0)
        {
         A[k][0]=C[i][0];
         A[k][1]=C[i][1];
         A[k][2]=t;
         k++;
        }
        i++;r++;
      }
      else
        if(B[i][1]>C[r][1])
        {
         A[k][0]=C[r][0];
         A[k][1]=C[r][1];
         A[k][2]=C[r][2];
         r++;k++;
        }
        else
        {
         A[k][0]=B[i][0];
         A[k][1]=B[i][1];
         A[k][2]=B[i][2];
         i++;k++;
        }
    }
    else
      if(B[i][0]>C[r][0])
      {
        A[k][0]=C[r][0];
        A[k][1]=C[r][1];
        A[k][2]=C[r][2];
        r++;k++;
      }
      else
      {
       A[k][0]=B[i][0];
       A[k][1]=B[i][1];
       A[k][2]=B[i][2];
       i++;k++;
      }
     }
   if(i>B[0][2])
       while(r<=C[0][2])
       {
        A[k][0]=C[r][0];
        A[k][1]=C[r][1];
        A[k][2]=C[r][2];
        r++;k++;
       }
     else
       while(i<=B[0][2])
       {
        A[k][0]=B[i][0];
        A[k][1]=B[i][1];
        A[k][2]=B[i][2];
        i++;k++;
       }

   A[0][0]=B[0][0];
   A[0][1]=B[0][1];
   A[0][2]=k-1;
}
void main()
{
 matrix b,c;
 thmatrix A,B,C;
 int h,l;
 printf("输入矩阵的行和列!\n");
 scanf("%d%d",&h,&l);
 printf("行为%-2d列为%-2d\n",h,l);
 b.m=h;
 b.n=l;
 creat(&b);
 print1(&b);
 change(&b,B);
 print2(B);
 printf("**********************************************************\n");
 c.m=h;
 c.n=l;
 creat(&c);
 print1(&c);
 change(&c,C);
 print2(C);
 printf("*********************************************************\n");
 add(B,C,A);
 printf("矩阵A与B的和");
 print2(A);
}
2011-04-15 12:59
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:7 
看晕了!

   唯实惟新 至诚致志
2011-04-15 13:45
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:7 

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-15 16:30
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
收藏
得分:7 
LZ太有耐心了
2011-04-15 16:39
独行wang
Rank: 1
等 级:新手上路
帖 子:6
专家分:8
注 册:2011-4-11
收藏
得分:0 
大家给点力 啊
2011-04-15 17:08
快速回复:大家帮忙看看我写的矩阵求和,看看是不是对所有的情况都符合,或者有什 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015570 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved