zoukankan      html  css  js  c++  java
  • 对称自反传递

      1 int main(int argc, char *argv[])
      2 {
      3   FILE *fp;
      4   fp = ("argv[1]", "r");
      5 }
      6 是这样写的吗??
      7 
      8 
      9 #include <stdio.h>
     10 #include <stdlib.h>
     11 #include <math.h>
     12 
     13 
     14 
     15 void Reflexive(int a[100][100], int n)
     16 {
     17 int i;
     18 for(i = 0; i < n; i++)
     19 if(a[i][i] == 0)
     20 {
     21 printf("not reflexive, ");/*主对角线有一个为0即输出不是自反,跳出循环*/
     22 break; 
     23 }
     24 if(i == n)
     25 printf("reflexive, ");/*如果循环全作一遍,则为自反*/
     26 }
     27 /*判断自反*/
     28 
     29 void Reflexiveness(int a[100][100], int n)
     30 {
     31 int i;
     32 for(i = 0; i < n; i++)
     33 if(a[i][i] == 1)
     34 {
     35 printf("not reflexiveness, ");/*主对角线有一个为q即输出不是反自反,跳出循环*/
     36 break;
     37 }
     38 if(i == n)
     39 printf("reflexiveness, ");/*如果循环全作一遍,则为反自反*/
     40 } 
     41 /*判断反自反*/
     42 
     43 void Symmetry(int a[100][100], int n)
     44 {
     45 int i, j;
     46 for(i = 0; i < n; i++)
     47 {
     48 for(j = 0; j < n; j++)
     49 {
     50 if(a[i][j] == a[j][i])/*如果关于主对角线对称的元素相等,则跳过下面的语句,继续循环*/
     51 continue;
     52 printf("not symmetry, ");/*上面的条件不符,即关于主对角线对称的元素不等,则输出不是对称,跳出循环*/
     53 break;
     54 }
     55 if(j != n)
     56 break;/*不是对称,跳出循环*/
     57 else if(i == n-1 && j == n)
     58 printf("symmetry, ");/*所有的元素都遍历了,没有不合对称条件的,输出对称*/
     59 }
     60 
     61 }
     62 /*判断是否对称*/
     63 
     64 
     65 
     66 void Antisymmetry(int a[100][100], int n)
     67 {
     68 int i, j, s = 1;/*用s作为不合条件时的标记*/
     69 for(i = 0; i < n; i++)
     70 {
     71 for(j = 0; j < n; j++)
     72 {
     73 if((a[i][j] == 1 && a[j][i] == 1) && (i != j))
     74 {
     75 s = 0;/*s = 0 时,不是反对称,跳出循环*/
     76 break;
     77 }
     78 }
     79 if(s == 0)
     80 {
     81 printf("not antisymmetry, ");/*判断s的值,为0,则输出不是反对称*/
     82 break;
     83 }
     84 }
     85 if(s == 1)/*s = 1时,输出反对称*/
     86 printf("antisymmetry, ");
     87 }
     88 /*判断是否反对称*/
     89 
     90 void Transitive(int a[100][100], int n)
     91 {
     92 int i, j, k;
     93 for(i = 0; i < n; i++)
     94 {
     95 for(j = 0; j < n; j++)
     96 if(a[i][j] == 0)/*对所有元素一一遍历,等于0时作下面的工作*/
     97 {
     98 for(k = 1; k < n; k++)
     99 if(a[i][k] == 1 && a[k][j] == 1)/*不是传递的判断,输出不是传递,推出整个程序*/
    100 {
    101 printf("not transitive.
    ");
    102 exit(0); 
    103 }
    104 }
    105 }
    106 printf("transitive.
    ");/*否则,输出传递*/
    107 }
    108 /*判断是否传递*/
    109 
    110 void main()
    111 {
    112 FILE *fp;
    113 int i = 0, j, n, k, s = 0;
    114 int b[10000], a[100][100];
    115 
    116 
    117 fp = fopen("a.txt", "r");
    118 
    119 if(!fp)
    120 {
    121 printf("Can not open !");
    122 exit(0);
    123 }
    124 while(!feof(fp))
    125 {
    126 b[i] = fscanf(fp, "%d", &k);
    127 i = i + 1;
    128 }
    129 
    130 n = (int)sqrt(i);
    131 
    132 fclose(fp);
    133 
    134 fp = fopen("a.txt", "r");
    135 while(!feof(fp))
    136 {
    137 for(i = 0; i < n; i++)
    138 for(j = 0; j < n; j++)
    139 fscanf(fp, "%d", &a[i][j]);
    140 }
    141 
    142 printf("The relation is:
    ");
    143 for(i = 0; i < n; i++)
    144 {
    145 for(j = 0; j < n; j++)
    146 printf("%-3d", a[i][j]);
    147 printf("
    ");
    148 }
    149 for(i = 0; i < n; i++)
    150 {
    151 for(j = 0; j < n; j++)
    152 if(a[i][j] == 1)
    153 {
    154 s = 1;
    155 break;
    156 }
    157 if(j != n)
    158 break;
    159 }
    160 if(!s)
    161 printf("reflexive, ");
    162 else
    163 Reflexive(a, n);
    164 Reflexiveness(a, n); 
    165 Symmetry(a, n);
    166 Antisymmetry(a, n); 
    167 Transitive(a, n);
    168 
    169 }
      1 #include<stdio.h>
      2 void z();
      3 int main()
      4 {
      5     int a[30][30];
      6     int m,n,i,j,c,b,d;
      7     c=d=0,b=0;
      8     d=1;
      9     while(d)
     10     {
     11         printf("欢迎使用关系性质判断系统:1,对称关系的判断,2.自反关系的判断
    
    请输入选项:");
     12             scanf("%d",&d);
     13         switch(d)
     14         {
     15         case 1:
     16             printf("请输入矩阵的行数");
     17             scanf("%d",&m);
     18             printf("请输入矩阵的列数");
     19             scanf("%d",&n);
     20             for(i=0;i<m;i++)
     21             {
     22                 for(j=0;j<n;j++)
     23                 {
     24                     printf("请输入矩阵关系中第%行第%d列的数字:",i,j);
     25                     scanf("%d",&a[i][j]);
     26                 }
     27             }
     28             printf("关系矩阵M为:
    ");
     29             for(i=0;i<m;i++)
     30             {
     31                 for(j=0;j<n;j++)
     32                     printf("%d",a[i][j]);
     33                 printf("
    ");
     34             }
     35             for(i=0;i<m;i++)
     36             {
     37                 for(j=0;j<n;j++)
     38                 {
     39                     if(a[i][j]!=a[j][i])
     40                     {
     41                         c=1;
     42                     break;
     43                     }
     44                 }
     45             }
     46         if(c==0)
     47         {
     48             for(i=0;i<m;i++)
     49             {
     50                 for(j=0;j<n;j++)
     51                 {
     52                     if(a[i][j]==1)
     53                     {
     54                         if(a[j][i]!=0)
     55                         {
     56                             c=2;
     57                             break;
     58                         }
     59                     }
     60                 }
     61             }
     62             if(c==2)
     63                 printf("该矩阵是对称的
    ");
     64             else if(c==0)
     65                 printf("该矩阵既是对称又是反对称的
    ");
     66         }
     67         else if(c==1)
     68         {
     69             for(i=0;i<m;i++)
     70             {
     71                 for(j=0;j<n;j++)
     72                 {
     73                     if(a[i][j]==1)
     74                     {
     75                         if(a[j][i]!=0)
     76                         {
     77                             c=2;
     78                             break;
     79                         }
     80                     }
     81                 }
     82             }
     83             if(c==2)
     84                 printf("该矩阵不是对称的又不是反对称的
    ");
     85             else
     86             {
     87                 printf("该矩阵是反对称性的
    ");
     88             }
     89         }
     90         break;
     91         case 2:
     92             z();
     93             break;
     94         case 0:
     95             break;
     96     }
     97     printf("
    ");
     98     printf("是否还继续?是请输入1,否请输入2:");
     99     scanf("%d",&d);
    100     printf("
    
    ");
    101 }
    102 return 0;
    103 }
    104 void z()
    105 {
    106     int m,n,i,j,a[80][80],c;
    107     c=0;
    108     printf("请输入矩阵的行数");
    109     scanf("%d",&m);
    110     printf("请输入矩阵的列数");
    111     scanf("%d",&n);
    112     for(i=0;i<m;i++)
    113     {
    114                 for(j=0;j<n;j++)
    115                 {
    116                     printf("请输入矩阵的第%d行第%d列的数字:",i,j);
    117                     scanf("%d",a[i][j]);
    118                 }
    119     }
    120     printf("关系矩阵M为:
    ");
    121     for(i=0;i<m;i++)
    122     {
    123         for(j=0;j<n;j++)
    124             printf("%d",a[i][j]);
    125         printf("
    ");
    126     }
    127     for(i=0;i<m;i++)
    128     {
    129         if(a[i][i]!=0)
    130         {
    131             c=1;
    132             break;
    133         }
    134     }
    135     if(c==1)
    136         printf("该矩阵是自反性的
    ");
    137     if(c==0)
    138         printf("该矩阵是反自反性的
    ");
    139 }
    140 
    141 void Transitive(int a[100][100], int n)
    142 {
    143 int i, j, k;
    144 for(i = 0; i < n; i++)
    145 {
    146 for(j = 0; j < n; j++)
    147 if(a[i][j] == 0)/*对所有元素一一遍历,等于0时作下面的工作*/
    148 {
    149 for(k = 1; k < n; k++)
    150 if(a[i][k] == 1 && a[k][j] == 1)/*不是传递的判断,输出不是传递,推出整个程序*/
    151 {
    152 printf("not transitive.
    ");
    153 exit(0); 
    154 }
    155 }
    156 }
    157 printf("transitive.
    ");/*否则,输出传递*/
    158 }
    159 /*判断是否传递*/
  • 相关阅读:
    Eclipse 中生成帮助文档 (javadoc) 迎客
    网管利器:七大免费网络工具 迎客
    oracle 11g 学习笔记 10_27
    oracle 11g 学习笔记 10_29
    oracle 11g学习笔记 2012_10_22
    oracle 11g 学习笔记 2012_10_25(2)
    oracle 11g 学习笔记 10_26
    oracle 11g 学习笔记 2012_10_24(1)
    oracle 11g 学习笔记2012_10_23(2)
    oracle 11g 学习笔记 2012_10_25(a)
  • 原文地址:https://www.cnblogs.com/Zblogs/p/3372895.html
Copyright © 2011-2022 走看看