Matriz simetrica

a10j
20 de Abril del 2006
desarrollar un programa en c que genere una determinada matriz simetrica y muestra por pantalla la suma de su diagonal principaly secundaria.El programa leerá por teclado dos numeros que representan el limite inferior y superior de una serie de numeros enteros. A continuacion se creARA una matriz que tenga tanta filas y columnas como elementos tenga la serie anterior.La primera fila almacenara los elementos de la serie empezando por el limite inferior y acabandoen el limite superior, lasegunda fila tendra la serie que comience en el limite inferior mas uno y finalice en el limite superior mas uno, y asi sucesivamente.El programa mostrara por pantalla la matriz construida y la suma de la diagonal principal y la de la diagonal secundaria.
Ejemplo de ejecucion:
INtroduzca el limite inferior: 3
introduzca el limite superior: 6
Matriz=
3 4 5 6
4 5 6 7
5 6 7 8
6 7 8 9

la suma de la diagonal principal es 24
la suma de la diagonal secundaria es 24
Consideraciones: se definira una constante MAX que tendra el numero maximo de filas y columnask se va a construir,en este caso el numero maximo sera 100
El programa controlara los siguientes errores:
-si el valordel limite superior introducido es menor k el del inferior se intercambian los valores , se mostrara un mensaje k indike k se han intercambiadoy se seguira el procesonormalmente
-si el numero de elementos en la serie es mayor qu e el tamaño maximo de filas y columnas de la matriz(determinado por la constante MAX)se finalizara el programa y se mostrara un mensaje de error avisando de este hacho e indicando el tamaño maximo permitido

maria
20 de Abril del 2006
?ya tienes hecho ese programa para determinar la matriz simetrica?

maria
20 de Abril del 2006
Hola! Lo tengo pero en mi lengua :( te lo traducire,ok!


#include <conio.h>
#include <stdio.h>

void citaj (int x[][10], int f, int c);
void napis (int x[][10], int f, int c);
int sym (int x[][10], int d);

main ()
{
int matica[10][10];
int dimenzia;
do {
printf ("Zadaj dimenziu maticu (symetricka matica je stvorcova matica typu NxN) (maximum 10)\n");
scanf ("%d", &dimenzia);
} while (dimenzia<1 || dimenzia>10);
printf ("Zadaj prvky matice:\n");
citaj (matica, dimenzia, dimenzia);
printf ("\nZADANA MATICA JE:\n");
napis (matica, dimenzia, dimenzia);
if (sym (matica, dimenzia)) printf ("\nJE symetricka\n");
else printf ("\nNIE JE symetricka\n");
getch ();

}




void citaj (int x[][10], int f, int c)
{int i, j;
for (i=0;i<f;i++)
for (j=0;j<c;j++)
scanf ("%d", &x[i][j]);
}



void napis (int x[][10], int f, int c)
{int i, j;
for (i=0;i<f;i++)
{
for (j=0;j<c;j++)
printf ("%8d", x[i][j]);
printf ("\n");
}
}



int sym (int x[][10], int d)
{int i, j, symet;
symet = 1;
for (i=0;i<d-1;i++)
for (j=i+1;j<d;j++)
if (x[i][j] != x[j][i]) symet = 0;
return (symet);
}