Muy interesante, mas divertido y práctico que el otro.
Me costó bastante la lógica para poder multiplicar las matrices. Me gustaría saber si hay alguna manera mas eficiente de hacer lo mismo.
/*
* Universidad Nacional de San Juan
* Facultad de Ciencias Exactas Físicas y naturales
* Programación Procedural año 2010
* Iván Neira Reg. 13583
*
* Práctico 1
* Ejercicio 10:
* Dada una matriz cuadrada A de dimesión 7 codificar un programa que permita:
* a) Calcular la traza de la martriz A (Suma de los elementos de la diagonal
* principal).
* b) Dado un escalar e , generar una matriz R resultante del producto escalar
* e*A . Mostrar la matriz R.
* c) Realizar el producto de las matrices A y R y mostrar la matriz resultante.
*/
#include<stdio.h>
#define K 7
void mostrar(int a[][K])
{
int i,j;
for(i=0;i<K;i++)
{
for(j=0;j<K;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}
void main(void)
{
int i,j,e,k=0,l=0,A[K][K],R[K][K],M[K][K], acumulador=0;
//Ingreso del arreglo
for(i=0;i<K;i++)
{
for(j=0;j<K;j++)
{
printf("\nIngrese valor de la fila %d columna %d\n",i+1,j+1);
scanf("%d",&A[i][j]);
fflush(stdin);
}
}
//muestra arreglo A
mostrar(A);
//Calcula y muestra la traza
for(i=0;i<K;i++)
acumulador+=A[i][i];
printf("\nLa traza resultante de la matriz A es %d\n", acumulador);
//Realiza el producto escalar por un número e ingresado
printf("\nIngrese un número para calcular el producto escalar\n");
scanf("%d",&e);
fflush(stdin);
for(i=0;i<K;i++)
{
for(j=0;j<K;j++)
{
R[i][j]=e*A[i][j];
}
}
//Muestra la matriz resultante del producto escalar R
printf("\nLa matriz resultante R es:\n");
mostrar(R);
acumulador=0;
printf("\nLa matriz resultante de la multipicación de A y R\n");
for(i=0;i<K;i++)
{
l=0;
for(j=0;j<K;j++)
{
acumulador=0;
for(k=0;k<K;k++) acumulador+= A[k][j]*R[i][k];
M[i][l]=acumulador;
l++;
}
}
mostrar(M);
getchar();
}
Opinen, Saludos!
0 comentarios:
Publicar un comentario