Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: audiogalaxy. en 8 Abril 2013, 07:12 AM

Título: [c] Programa que indica Relaciones
Publicado por: audiogalaxy. en 8 Abril 2013, 07:12 AM
Intentando ser lo más puntual posible estoy haciendo un programa que me diga el tipo de relaciones:

Ya tengo el código para todo, sólo me falta definir el tipo de relación transitiva:

que va así

Si aRb y bRc  Entonces aRc


Lo codifiqué así:

for (i=1;i<=n;i++){
    for (j=1;j<=n;j++){
        if (a[i][j]==at[i][j] || at[i][j]==ax[i][j])
        aux5++;
}


Pero así no funciona

¿Alguna idea de cómo ponerlo?
Título: Re: [c] Programa que indica Relaciones
Publicado por: audiogalaxy. en 8 Abril 2013, 07:14 AM
Aquí pongo el código completo pero la parte de arriba es puntualmente lo que está mál definido.

Código (c_mac) [Seleccionar]
#include<conio.h>
#include<string.h>
#include<stdio.h>
main ()
{
//clr();
printf("Programa para identificar el tipo de relaci¢n\n\n");
int a[9][9], at[9][9], ax[9][9];
int b,i,j,k,n;
printf("¨Cu ntos elementos tiene en tu conjunto tu relaci¢n?:");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        a[i][j]=0;
        at[i][j]=0;
        ax[i][j]=0;
    }
}
printf("Dale 1 si existe la pareja ordenada, 0 si no existe:\n");
for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        printf("La pareja (%d,%d)",i,j);
        //printf(i," , ");
        //printf(j,"): ");
        scanf("%d",&b);
        a[i][j]=b;
        at[i][j]=b;
        ax[i][j]=b;
       
    }
}
int aux5=0;
for (i=1;i<=n;i++){
    for (j=1;j<=n;j++){
        if (a[i][j]==at[i][j] || at[i][j]==ax[i][j])
        aux5++;
}
}
int aux=0;
for (k=1;k<=n;k++)
{
  if (a[k][k]==1)
    aux++; 
}
int aux2=0;
for (k=1;k<=n;k++)
{
    if (a[k][k]==0)
    aux2++;
}
int aux1=0;

for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        if (a[i][j]==at[i][j])
        aux1++;
    }
}
int aux3=0;

for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        if (a[i][j]!=at[i][j])
        aux3++;
    }
}
int aux4=1;

for (i=1;i<=n;i++)
{
    for (j=1;j<=n;j++)
    {
        if (a[i][j]<=at[j][i])
        aux4++;
    }
}



if (aux2==n)
{
printf(" La relaci¢n es Irreflexiva\n");
}
if (aux==n)
{
printf(" La relaci¢n es Reflexiva\n");
}
if (aux1==n*n)
{
printf(" La relaci¢n es Sim,trica\n");
}
if (aux3==n*n)
{
printf(" La relaci¢n es Asim,trica\n");
}
if (aux4==n*n)
{
printf(" La relaci¢n es Antisim,trica\n");
}
if (aux5==n*n)
{
printf(" La relaci¢n es Transitiva\n");
}
else
{
printf(" La relaci¢n NO es Transitiva\n");
}
if ((aux==n) && (aux1==n*n) && (aux5==n*n))
{
printf(" La relaci¢n es Equivalente\n");
}
getch ();
return 0;
}