-" Si esto le parece japonés adivine que dice acá: あなたのお母さんは私のガールフレンドです =D "

Ejercicio 10 (de entrega) : Multiplicación de matrices

| sábado, 28 de agosto de 2010
Aquí dejo el segundo ejercicio que hay que entregar el lunes para poder rendir el parcial.
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

licencia

Licencia de Creative Commons
Ejercicios de programación by Iván Neira (ae) is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at paraserlicenciado.blogspot.com.