/*
Soru4D: Bir n (n<10) degeri icin {a| 0<=a<=n} kumesi uzerinde verilen bir
bagintinin yansima, simetri ve gecisme ozelliklerini bulan bir program yaziniz.
Ornek:
Girdi:
n degerini veriniz: 5
Bagintiyi veriniz:
1 1 1 0 0
1 1 1 1 0
1 1 1 0 0
0 1 0 1 0
1 0 0 0 1
Cikti: Yansimali
Simetrisiz
Gecismeli
Aciklama:
Bu soruda baginti bir matris olarak gosterilmektedir.
Not:
B, A uzerinde tanimli bir baginti olsun.
- A'nin her x elemani icin, (x,x) B'nin elemani ise B yansimalidir.
- A'nin her x,y elemani icin, (x,y) B'nin elemani iken (y,x) de B'nin
elemani ise B simetriktir.
- A'nin her x,y elemani icin, (x,y) ve (y,x) B'nin elemani iken x=y ise
B antisimetriktir.
- A'nin x,y,z elemani icin, (x,y) ve (y,z) B'nin elemani iken (x,z) de
B'nin elemani ise B gecismelidir.
* B bagintisi yansimali, simetrik ve gecismeli ise denklik bagintisidir.
* B bagintisi yansimali, antisimetrik ve gecismeli ise kismi siralama
bagintisidir.
*/
#include <stdio.h>
void main()
{ int A[10][10],n,i,j,k,s;
printf("n degerini veriniz: ");
scanf("%d",&n);
printf("Bagintiyi veriniz: ");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%d",&A[i][j]);
// Yansima ozelligi arastiriliyor...
for (i=0; i<n; i++)
if (A[i][i]==0) break;
if (i<n) printf("Yansimasiz\n"); else printf("Yansimali\n");
s=0; // s burada FLAG olarak kullaniliyor.
// Yani aksi bir durum cikarsa s'in degeri 1 olacak.
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (A[i][j]!=A[j][i]) s=1; // Terslik var, s'i 1 yap
if (s==0) printf("Simetrik"); // Terslik yok ise
else printf("Simetrisiz"); // aksi halde
s=0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (A[i][j]==1)
for (k=0; k<n; k++)
if (A[j][k]==1 && A[i][k]==0) s=1; // Terslik var
if (s==0) printf("Gecismeli"); // Terslik yok ise
else printf("Gecismesiz"); // aksi halde
}