Necesito una paqueña ayuda
Hola a todos,lo primero decir q soy un novato en esto de la programacion.
Estoy escribiendo un pequeño programilla en C++,y necesito una funcion que me diga si una matriz es simetrica o no lo es.
Luego implementare la funcion en el programa principal,junto con otras funciones.
He hecho lo siguiente:
void simetrica(int a[][col],int n,int m)
{
int i,j;
for(i=0;i<n;i++);
for(j=0;j<m;j++);
{
if ( a[i][j]==a[j][i])
printf("nEs simetrica");
else
printf("No es simetrica");
}
}
pero lo unico que consigo es que me diga si la matriz es par o impar.
Estaria muy agradecido si alguien me hecha una mano.
Gracias de antemano.
Estoy escribiendo un pequeño programilla en C++,y necesito una funcion que me diga si una matriz es simetrica o no lo es.
Luego implementare la funcion en el programa principal,junto con otras funciones.
He hecho lo siguiente:
void simetrica(int a[][col],int n,int m)
{
int i,j;
for(i=0;i<n;i++);
for(j=0;j<m;j++);
{
if ( a[i][j]==a[j][i])
printf("nEs simetrica");
else
printf("No es simetrica");
}
}
pero lo unico que consigo es que me diga si la matriz es par o impar.
Estaria muy agradecido si alguien me hecha una mano.
Gracias de antemano.
Tal cual lo tienes, supongo que te salen muchas veces texto "es simetrica", "no es simetrica".
Yo haria lo siguiente:
La función devuelve un boolean (o en su defecto un entero). True si es simetrica, False si no lo es (1 si es simetrica, 0 si no lo es).
int simetrica (...)
Ahora en el bucle, cuando encuentres un ij distinto de ji, haces un return 0.
Si consigues terminar el bucle, es que es simetrica, devuelves un 1
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
if ( a[i][j] != a[j][i] )
return 0;
}
}
return 1;
Lo de escribir en pantalla lo dejaría para el que llama. Si no escribes en la función y devuelves el resultado, la función será más reutilizable en otros programas, en los que a lo mejor necesitas saber si una matriz es simétrica, pero no escribirlo en pantalla.
Se bueno.
Yo haria lo siguiente:
La función devuelve un boolean (o en su defecto un entero). True si es simetrica, False si no lo es (1 si es simetrica, 0 si no lo es).
int simetrica (...)
Ahora en el bucle, cuando encuentres un ij distinto de ji, haces un return 0.
Si consigues terminar el bucle, es que es simetrica, devuelves un 1
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
if ( a[i][j] != a[j][i] )
return 0;
}
}
return 1;
Lo de escribir en pantalla lo dejaría para el que llama. Si no escribes en la función y devuelves el resultado, la función será más reutilizable en otros programas, en los que a lo mejor necesitas saber si una matriz es simétrica, pero no escribirlo en pantalla.
Se bueno.
