| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:关矩阵传递性的验证 最后做判断时 不会了 求大神知道
只看楼主 加入收藏
少林小和尚
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2013-3-31
结帖率:73.68%
收藏
 问题点数:0 回复次数:0 
关矩阵传递性的验证 最后做判断时 不会了 求大神知道
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAX 1000
typedef struct
{
    int row,col;
    int value;
}Triple;
typedef struct
{
    Triple data[MAX];
    int rows,cols,nums;
}T;
  T *Creat()
  {     
      T*A;
      int i;
      A=(T*)malloc(sizeof(T));
      printf("请输入元素总个数:\n");
      scanf("%d",&(A->nums));
      printf("请输入总行数,总列数:\n");
      scanf("%d,%d",&A->rows,&A->cols);
      printf("请输入行,列,值\n");
      for(i=0;i<A->nums;i++)
      {
          scanf("%d,%d,%d",&A->data[i].row,&A->data[i].col,&A->data[i].value);
          //printf("\n");
      }
      return A;
  }
void Issymmetric(T*A)

{
    int i,j;                  //循环控制变量
    int a,b,x,c,d,y;
    int count=0;           //计数变量  判断是不是对称矩阵
    for(i=0;i<A->nums;i++)
    {
        a=A->data[i].row;
        //printf("A:%d\n",a);
        b=A->data[i].col;
        //printf("B:%d\n",b);
        x=A->data[i].value;
        //printf("%d\n",x);
        for(j=0;j<A->nums;j++)
        {
            c=A->data[j].row;
        //    printf("C:%d\n",c);
            d=A->data[j].col;
        //    printf("D:%d\n",d);
            y=A->data[j].value; //
        //    printf("%d\n",y);
            if(((a==d)&&(b==c)&&(x==y)))
                count++;
          //   printf("%d\n",count);
        }
         
    }   
    printf("\n\n");
    printf("%d\n",count);
        if(count==(A->nums))
            printf("是对称矩阵\n");
        else
            printf("不是对称矩阵\n");
}
 //自反  在关系矩阵中对角线元素为1
void  Iszifan(T*A)
{
    int i;  //循环控制变量
    int count=0;
    int a,b;
    for(i=0;i<A->nums;i++)
    {
        a=A->data[i].row;
        b=A->data[i].col;
        if(a==b&&A->data[i].value==1)
            count++;
    }
    if(count==A->nums)
        printf("是自反关系矩阵\n");
    else
        printf("不是自反关系矩阵\n");
}
//反自反性  在关系矩阵中当且仅当对角线元素都为零
void  Isfanzifan(T*A)
{
    int i;  //循环控制变量
    int count=0;
    int a,b;
    for(i=0;i<A->nums;i++)
    {
        a=A->data[i].row;
        b=A->data[i].col;
        if(a==b&&A->data[i].value==1)
         count++;              
    }
    if(count==A->nums)
        printf("是反自反关系矩阵\n");
    else
        printf("不是自反关系矩阵\n");

}
//传递性
void deliver(T*A)  
{
    int i,j,k;        //循环控制变量
    int a,b;
    int c,d;
    int count=0;
    for(i=0;i<A->nums;i++)
    {
        a=A->data[i].row;
        b=A->data[i].col;
        for(j=0;j<A->nums;j++)
        {
            c=A->data[j].row;
            d=A->data[j].col;
            if(b==c)
            {
                for(k=0;k<A->nums;k++)
                {
                    if(a!=A->data[k].row||d!=A->data[k].col)
                    {
                           count++;
                          
                            if(count>(A->nums))
                            {
                                printf("%d\n",count);
                                printf("不是传递关系矩阵\n");      
                                         return;
                            }
                    }
                }
            }
        }
    }   
    printf("是传递关系矩阵\n");
}

 void main()
 {
     T *B;
     int choice;
     printf("1:对称性         2:自反性                3:反自反性           4:传递性\n");
     printf("请输入选项:");
     scanf("%d",&choice);
     switch(choice)
      {
     case 1:{
         B=Creat();
     Issymmetric(B);
     break;
            }
     case 2:{
         printf("请输入关系矩阵\n\n");
         B=Creat();
        Iszifan(B);
          break;
            }
     case 3:{
         printf("请输入关系矩阵\n");
         B=Creat();
         Isfanzifan(B);
         break;
            }
     case 4:{
         printf("请输入关系矩阵\n");
         B=Creat();
         deliver(B);
         break;
            }
     default :printf("输入选项有误\n");
      }
 }
搜索更多相关主题的帖子: include 元素 
2013-12-01 11:44
快速回复:关矩阵传递性的验证 最后做判断时 不会了 求大神知道
数据加载中...
 
   



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

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