Exercício pratico de relações em c++
Binary Road :: Lógica Computacional :: Introdução à Programação Lógica :: Linguagens Formais e Autômatos :: Matemática discreta :: Estudo
Página 1 de 1
Exercício pratico de relações em c++
Identificar as caracteristicas que definem as relações: funcional, injetora, total, sobrejetora, monomorfismo, epimorfismo e isomorfismo. Desenvolver um programa em C++ que receba uma matriz e classifique a qual relação pertence.
Funcional: Existe no máximo um valor lógico verdadeiro (1) por linha.
Injetora: Existe no máximo um valor lógico verdadeiro (1) por coluna.
Total: Existe pelomenos um valor lógico verdadeiro (1) por linha.
Subrejetora: Existe pelomenos um valor lógico verdadeiro (1) por coluna.
Monomorfismo: Existe pelomenos um valor lógico verdadeiro por linha e no máximo um valor verdadeiro (1) por coluna.
Epimorfismo: Existe pelomenos um valor lógico verdadediro pro coluna e no máximo um valor lógico verdadeiro (1) por linha.
Isomorfismo: Os tipos funcional, injetora, total e sobrejetora, deverão serem atendidas simultaneamente.
NÃO COPIEM MEU CÓDIGO, FAÇA O SEU SE NÃO É ZERO PRA NÓS DOIS.
Funcional: Existe no máximo um valor lógico verdadeiro (1) por linha.
Injetora: Existe no máximo um valor lógico verdadeiro (1) por coluna.
Total: Existe pelomenos um valor lógico verdadeiro (1) por linha.
Subrejetora: Existe pelomenos um valor lógico verdadeiro (1) por coluna.
Monomorfismo: Existe pelomenos um valor lógico verdadeiro por linha e no máximo um valor verdadeiro (1) por coluna.
Epimorfismo: Existe pelomenos um valor lógico verdadediro pro coluna e no máximo um valor lógico verdadeiro (1) por linha.
Isomorfismo: Os tipos funcional, injetora, total e sobrejetora, deverão serem atendidas simultaneamente.
NÃO COPIEM MEU CÓDIGO, FAÇA O SEU SE NÃO É ZERO PRA NÓS DOIS.
- Código:
#include <iostream>
using namespace std;
const int lin=4, col=4;
const int y=7;
int menu();
void preenche(int mtr[lin][col]);
void print(int mtr[lin][col]);
void funcional(int mtr[lin][col], int check[y]);
void injetora(int mtr[lin][col], int check[y]);
void total(int mtr[lin][col], int check[y]);
void sobrejetora(int mtr[lin][col], int check[y]);
void monomorfismo(int check[y]);
void epimorfismo(int check[y]);
void isomorfismo(int check[y]);
void main()
{
int mtr[lin][col], check[y], op, i=0, l, c;
for(l=0; l<lin; l++)
for(c=0; c<col; c++)
mtr[l][c]=0;
do{
for(i=0; i<y; i++)
check[i]=0;
op=menu();
if(op == 1)
{
system("cls");
preenche(mtr);
system("pause");
}
else
if(op == 2)
{
l=0;
system("cls");
print(mtr);
funcional(mtr, check);
injetora(mtr, check);
total(mtr, check);
sobrejetora(mtr, check);
monomorfismo(check);
epimorfismo(check);
isomorfismo(check);
cout<< "============================================================\n";
i=0;
cout<< "\tFuncional check:\t" << check[i] << endl;
i++;
cout<< "\tInjetora check:\t\t" << check[i] << endl;
i++;
cout<< "\tTotal check:\t\t" << check[i] << endl;
i++;
cout<< "\tSobrejetora check:\t" << check[i] << endl;
i++;
cout<< "\tMonomorfismo check:\t" << check[i] << endl;
i++;
cout<< "\tEpimorfismo check:\t" << check[i] << endl;
i++;
cout<< "\tIsomorfismo check:\t" << check[i] << endl;
cout<< "============================================================\n\n";
cout<< "============================================================\n";
for(i = 0; i < y; i++)
{
if(check[i] == 1 && i == 0)
cout<< "\tE uma relacao Funcional\n";
else
if(check[i] == 1 && i == 1)
cout<< "\tE uma relacao Injetora\n";
else
if(check[i] == 1 && i == 2)
cout<< "\tE uma relacao Total\n";
else
if( check[i] == 1 && i == 3)
cout<< "\tE uma relacao Sobrejetora\n";
else
if(check[i] == 1 && i == 4)
cout<< "\tE uma relacao Monomorfismo\n";
else
if(check[i] == 1 && i == 5)
cout<< "\tE uma relacao Epimorfismo\n";
else
if(check[i] == 1 && i ==6)
cout<< "\tE uma relacao Isomorfismo\n";
else
l++;
}
if(l == y)
cout<< "\tEsta matriz nao posui nem uma relacao\n";
cout<< "============================================================\n";
cout<< "\n\n";
system("pause");
}
}while(op != 3);
}
int menu()
{
int op;
do{
system("cls");
cout<< "===================================================\n";
cout<< "\t1 - Preencher a matriz.\n";
cout<< "\t2 - Verificar tipo de relacao.\n";
cout<< "\t3 - Sair.\n";
cout<< "===================================================\n";
cout<< "\n\tDigite a opcao desejada.\n\t";
cin>> op;
if(op < 1 || op > 3)
{
system("cls");
cout<< "Opcao invalida.\n";
system("pause");
}
}while(op < 1 || op > 3);
return op;
}
void preenche(int mtr[lin][col])
{
int l, c;
for(l=0; l < lin; l++)
for(c=0; c < col; c++)
{
do{
system("cls");
cout<< "Digite o valor 0 ou 1 para linha " << l+1 << " coluna " << c+1 << endl;
cin>> mtr[l][c];
if(mtr[l][c] < 0 || mtr[l][c] > 1)
{
system("cls");
cout<< "Valor invalido digite o valor Zero(0) ou Um(1).\n";
system("pause");
}
}while(mtr[l][c] < 0 || mtr[l][c] > 1);
}
}
void print(int mtr[lin][col])
{
int l, c;
cout<< "\n\n";
for(l=0; l<lin; l++)
{
cout<< "\t\t| ";
for(c=0; c<col; c++)
cout<< mtr[l][c] <<" | ";
cout<< endl;
}
cout<< "\n\n";
}
void funcional(int mtr[lin][col], int check[y])
{
int l, c, i=0, cont, teste[lin];
for(l=0; l < lin; l++)
{
cont=0;
for(c=0; c < col; c++)
{
if(mtr[l][c] == 1)
cont++;
}
if(cont > 1 || cont == 0)
{
teste[l]=0;
}
else
teste[l]=1;
}
l=0;
if(teste[l] >0 || teste[l+1] >0 || teste[l+2] >0 || teste[l+3] >0)
{
cont=0;
for(l=0; l < lin; l++)
{
if(teste[l] == 1)
cont++;
}
if(cont >= 1)
check[i]=1;
else
check[i]=0;
}
else
check[i]=0;
}
void injetora(int mtr[lin][col], int check[y])
{
int l, c, i=1, cont, teste[col];
for(c=0; c < col; c++)
{
cont=0;
for(l=0; l < lin; l++)
{
if(mtr[l][c] == 1)
cont++;
}
if(cont > 1 || cont == 0)
{
teste[c]=0;
}
else
teste[c]=1;
}
c=0;
if(teste[c] >0 || teste[c+1] >0 || teste[c+2] >0 || teste[c+3] >0)
{
cont=0;
for(c=0; c < col; c++)
{
if(teste[c]== 1)
cont++;
}
if(cont >= 1)
check[i]=1;
else
check[i]=0;
}
else
check[i]=0;
}
void total(int mtr[lin][col], int check[y])
{
int l, c, i=2, cont, teste[lin];
for(l=0; l < lin; l++)
{
cont=0;
for(c=0; c < col; c++)
{
if(mtr[l][c] == 1)
cont++;
}
if(cont == 0)
{
teste[l]=0;
break;
}
else
teste[l]=1;
}
cont=0;
for(l=0; l < lin; l++)
{
if(teste[l]== 1)
cont++;
}
if(cont == lin)
check[i]=1;
else
if(cont != lin)
check[i]=0;
}
void sobrejetora(int mtr[lin][col], int check[y])
{
int l, c, i=3, cont, teste[col];
for(c=0; c < col; c++)
{
cont=0;
for(l=0; l < lin; l++)
{
if(mtr[l][c] == 1)
cont++;
}
if(cont == 0)
{
teste[c]=0;
break;
}
else
{
teste[c]=1;
}
}
cont=0;
for(c=0; c < col; c++)
{
if(teste[c]== 1)
cont++;
}
if(cont == col)
check[i]=1;
else
if(cont != col)
check[i]=0;
}
void monomorfismo(int check[y])
{
int i=1, x=2, k=4;
if(check[i] == 1 && check[x] == 1)
check[k]=1;
}
void epimorfismo(int check[y])
{
int i=0, x=3, k=5;
if(check[i] == 1 && check[x] == 1)
check[k]=1;
}
void isomorfismo(int check[y])
{
int i1=0, i2=1, i3=2, i4=3, k=6;
if(check[i1] == 1 && check[i2] == 1 && check[i3] == 1 && check[i4] == 1)
check[k]=1;
}
Renancr- Mensagens : 118
Data de inscrição : 08/03/2010
Tópicos semelhantes
» Introdução a string
» String exercícios Propostos 15/05
» Aula de registro
» Primeira aula de Função
» Primeiro exercício de Ponteiro
» String exercícios Propostos 15/05
» Aula de registro
» Primeira aula de Função
» Primeiro exercício de Ponteiro
Binary Road :: Lógica Computacional :: Introdução à Programação Lógica :: Linguagens Formais e Autômatos :: Matemática discreta :: Estudo
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos