Multiplicacion de Matrices

7
Práctica 3: Multiplicación de Matrices Introducción La multiplicación de matrices es sencilla, pero a medida que aumenta el número de filas y columnas de ambas matrices se vuelve dificultoso, tanto así que corremos el riesgo de confundirnos en sumar y en multiplicar, por eso es necesario utilizar un algoritmo para encontrar la solución de una manera más eficiente. Para multiplicar matrices es muy importante que el numero de columnas de la primera matriz sea igual al número de filas de la segunda matriz, si esta condición no se cumple entonces no se podrá multiplicar dichas matrices. Objetivos El objetivo de esta práctica es lograr una multiplicación de matrices, mediante los datos suministrados por el usuario. La información recabada será utilizada para dar el numero de las filas y columnas que tendrán las matrices, y posteriormente se asignaran datos para utilizarlos en la multiplicación. Material a Utilizar

Transcript of Multiplicacion de Matrices

Page 1: Multiplicacion de Matrices

Práctica 3: Multiplicación de Matrices

Introducción

La multiplicación de matrices es sencilla, pero a medida que aumenta el número de filas y columnas de ambas matrices se vuelve dificultoso, tanto así que corremos el riesgo de confundirnos en sumar y en multiplicar, por eso es necesario utilizar un algoritmo para encontrar la solución de una manera más eficiente.

Para multiplicar matrices es muy importante que el numero de columnas de la primera matriz sea igual al número de filas de la segunda matriz, si esta condición no se cumple entonces no se podrá multiplicar dichas matrices.

Objetivos

El objetivo de esta práctica es lograr una multiplicación de matrices, mediante los datos suministrados por el usuario. La información recabada será utilizada para dar el numero de las filas y columnas que tendrán las matrices, y posteriormente se asignaran datos para utilizarlos en la multiplicación.

Material a Utilizar

Una computadora con el programa C++ previamente instalado

Page 2: Multiplicacion de Matrices

Procedimiento

#include <vcl.h>#pragma hdrstop

#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------

void __fastcall TForm1::Definirtamao1Click(TObject *Sender){ //int col,reng;

Edit1->Visible=true; Edit2->Visible=true; Label1->Visible=true; Label2->Visible=true; Columna->Visible=true; Renglon->Visible=true; Button2->Visible=true;

//col= StrToInt (Edit1->Text); //reng= StrToInt (Edit2->Text);

}//---------------------------------------------------------------------------

void __fastcall TForm1::Definirtamaob1Click(TObject *Sender){ //int col,reng;

Edit3->Visible=true; Edit4->Visible=true; Label2->Visible=true; Label3->Visible=true; Label4->Visible=true; Button3->Visible=true;

//col= StrToInt (Edit1->Text); //reng= StrToInt (Edit2->Text);

}//---------------------------------------------------------------------------

Page 3: Multiplicacion de Matrices

void __fastcall TForm1::Button2Click(TObject *Sender){ int col,reng; col= StrToInt(Edit1->Text); reng= StrToInt(Edit2->Text); StringGrid1->ColCount=col; StringGrid1->RowCount=reng; StringGrid1->Visible=true;}//---------------------------------------------------------------------------

void __fastcall TForm1::Multiplicacion1Click(TObject *Sender){int col,reng,col2,reng2;int a,b,c,d, valor1, valor2, res, res1;//parametros matriz Areng=StrToInt(Edit2->Text);col=StrToInt(Edit1->Text);//Parametros matriz Breng2=StrToInt(Edit3->Text);col2=StrToInt(Edit4->Text);

if(col==reng2) { ShowMessage("Si se puede multiplicar"); Label5->Visible=True; StringGrid3->ColCount=col2; StringGrid3->RowCount=reng; StringGrid3->Visible=True; for(a=0;a<reng;a++) { for(b=0;b<col2;b++) { valor1=0; //col reng2 valor2=0; res=0; for(c=0;c<col;c++) //ciclos q realizan ls sumas n c/celda { valor1=StrToInt(StringGrid1->Cells[c][a]); valor2=StrToInt(StringGrid2->Cells[b][c]); res=res+valor1*valor2; } StringGrid3->Cells[b][a]=IntToStr(res); } }

}else { ShowMessage("No se puede multiplicar"); }}//---------------------------------------------------------------------------

Page 4: Multiplicacion de Matrices

void __fastcall TForm1::Button3Click(TObject *Sender){ int col,reng; col= StrToInt(Edit4->Text); reng= StrToInt(Edit3->Text); StringGrid2->ColCount=col; StringGrid2->RowCount=reng; StringGrid2->Visible=true;}//---------------------------------------------------------------------------

void __fastcall TForm1::Inicializarmatrices1Click(TObject *Sender){int col,reng,i,j,num;

col= StrToInt(Edit1->Text);reng= StrToInt(Edit2->Text);

for(i=0;i<col;i++) { for(j=0;j<reng;j++) { num=random(10); StringGrid1->Cells[i][j]=num; } }

col= StrToInt(Edit4->Text);reng= StrToInt(Edit3->Text);

for(i=0;i<col;i++) { for(j=0;j<reng;j++) { num=random(10); StringGrid2->Cells[i][j]=num; } }

}//---------------------------------------------------------------------------

Page 5: Multiplicacion de Matrices

Resultados

Ejemplo 1

Ejemplo 2

Page 6: Multiplicacion de Matrices

Ejemplo 3

Conclusión

La realización de este programa es un refuerzo para las actividades que desarrollamos en clase. En este ejercicio pusimos en práctica los ciclo for's anidados y utilizamos los StringGrid's a manera de arreglos para poder realizar las sumas y multiplicaciones necesarias para obtener cada uno de los valores de la casilla de resultados. El único gran problema fueron las conversiones de tipos de datos, ya que teníamos que distinguir cuando cambiar de cadena a entero y viceversa.