Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion main.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

#include <stdio.h>
#include "relacoes.h"
#include "relacoes.h" //Biblioteca onde será definida o conjunto S e o rho

int main()
{
Expand Down
59 changes: 52 additions & 7 deletions propriedades.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,65 @@
#ifndef _PROPRIEDADES_H
#define _PROPRIEDADES_H

int ehReflexiva(){
return 0;
int ehReflexiva(int conjS_2[], int rho_2[][2],int tam_S, int qtd_par); // protótipo da funcao reflexiva


int ehReflexiva(int conjS_2[], int rho_2[][2],int tam_S, int qtd_par) { // funcao para verificar se eh reflexiva, return 0 = falso, return 1 = verdade.
int i, j, k, cont = 0; // cont verifica se encontrou o par de x = (x,x)
int refl = 0; // se refl = 3 eh porque os 3 elementos de S existe o (x,x) em rho

for (i = 0; i < tam_S; i++) //For 1 - para verificar cada elemento do conjunto S. tam_S me manda a quantidade de elementos
{
cont = 0; //zerar o cont para verificar o proximo elemento em S
for (j = 0; j < qtd_par; j++) // For 2 - Como eh uma matriz, este for varia a linha, qtd_par sabe quantos pares existe
{
for (k = 0; k < 2; k++) //For 3 - este for varia a coluna da matriz,
{

if (conjS_2[i] == rho_2[j][k]) { //verifica se x é = (x,);
k++;
if (conjS_2[i] == rho_2[j][k]) { //verifica se x é = ( ,x)
cont++; // x = (x,x)

} else { // caso x = (x, ), mas falso em x = ( , x) então já sai do For 3
k = 2;
}
} else { // caso x = ( x, ) seja falso já sai do For 3
k = 2;
}



}
if (cont == 1) { // se cont == 1 é se existe x = (x,x) entao (refle++) e então nem verifica os outros pares(j=qtd_par)
j = qtd_par;
refl++;
}

}

}
if (refl == tam_S) {
return 1;
} else {
return 0;
}
}
int ehSimetrica(){

int ehSimetrica() { // funcao para verificar se eh simetrica, return 0 = falso, return 1 = verdade.
return 1;
}
int ehTransitiva(){

int ehTransitiva() { // funcao para verificar se eh transitiva, return 0 = falso, return 1 = verdade.
return 0;
}
int ehAntiSimetrica(){

int ehAntiSimetrica() { // funcao para verificar se eh anti-simetrica, return 0 = falso, return 1 = verdade.
return 1;
}
int ehEquivalencia(){

int ehEquivalencia() { // funcao para verificar se eh anti-simetrica, return 0 = falso, return 1 = verdade.
return 0;
}

#endif
#endif
20 changes: 12 additions & 8 deletions relacoes.h
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
#ifndef _RELACOES_H
#define _RELACOES_H
#define S 4 // Define o tamanho do conjunto S, ou seja, quantos elementos tem no conjunto S
#define pares 4 // Define a quantidade de pares em rho



#include "propriedades.h"

void relacao_01(){

char nome[3] = "R01";
int conjS[3] = {1,2,3};
int rho[3][2] = { {1,2}, {3,2}, {1,1} };
int conjS[S] = {1,2,3,4}; // Conjunto S definido
int rho[pares][2] = { {1,1}, {3,3}, {2,2}, {3,4}}; // rho já definido

int reflexiva = 0;
int simetrica = 0;
int transitiva = 1;
int anti_simetrica = 1;
int equivalencia = 0;
int reflexiva = 0; // (Vx E S -> (x,x)E rho). 0 = falso, 1 = verdade.
int simetrica = 0; // (Vx,y E S ^ (x,y) E rho -> (y,x) E rho). 0 = falso, 1 = verdade.
int transitiva = 1; // (Vx,y,z E S ^ (x,y) E rho ^ (y,z) E rho ^ -> (x,z) E rho). 0 = falso, 1 = verdade.
int anti_simetrica = 1; // (Vx,y E S ^ (x,y) E rho ^ (y,x) E rho -> x=y). 0 = falso, 1 = verdade.
int equivalencia = 0; // Verdade se reflexiva = 1, simetrica = 1 e trasitiva = 1,senão falso. 0 = falso, 1 = verdade.

printf("\n");

if(ehReflexiva() != reflexiva){
if(ehReflexiva(conjS, rho,S , pares) != reflexiva){
printf("ERRO: [%s] - Problema na propriedade reflexiva!\n", nome);
}
if(ehSimetrica() != simetrica){
Expand Down