Logo Studenta

Reporte Practica 8

¡Estudia con miles de materiales!

Vista previa del material en texto

TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE LA LAGUNA
Programación visual
	
Edgar Daniel Alba González (19130736)
6º Semestre de Ing. Electrónica
Practica #8
Profesor: Alejandro Enrique Dzul López
Índice
Introducción	2
Planteamiento del programa	2
Desarrollo	3
Resultados	3
Ejecución	10
Introducción 
En esta práctica se emplearán los conocimientos para realizar un programa que sea capaz de realizar operaciones con matrices, como lo son la matriz transpuesta, cofactores y la determinante de esta, En pocas palabras, se podría decir que es una calculadora de matrices. En esta práctica se usa como ejemplo el uso de una práctica pasada para las operaciones con matrices.
Planteamiento del programa
Desarrollar un programa en lenguaje C++ y en modo visual. La aplicación puede tener la siguiente apariencia:
Los objetos visuales de la aplicación son: 2 StringGrid, 1 Button, 2 Label y 1 MainMenu. El objeto MainMenu tendrá las opciones: “Transpuesta”, “Cofactores” y “Determinante”, dentro de la opción “Operación”, además de la opción “Salir” para cerrar la aplicación. En el caso de la opción “Determinante”, el segundo StringGrid cambiará a un tamaño de 1x1. La matriz base es de 3x3 (elementos tipo double). El botón servirá para cerrar la aplicación o también se podrá usar la opción del MainMenu “salir” con el mismo objetivo. Recordar que es necesario cambiar el separador decimal para que reconozca el punto. Recordar también que, en el StringGrid, las celdas están referenciadas como [Columna][Renglón]. En el código del programa se declarará una clase llamada CMatriz (usada en la práctica 03), por lo que cada opción del Menú deberá ser obtenida utilizando el método respectivo.
Desarrollo
Para poder desarrollar esta práctica tuve que acomodar primero la parte visual, por lo que lo primero que hice fue poner los StringGrid, uno para la matriz con la que introduciremos los datos y el otro para que nos dé el resultado. Después usamos la función MainMenu en donde pondremos las opciones de las operaciones como lo son la transpuesta, cofactores y la determinante de la matriz deseada, así como también una opción y un botón para salir del programa; se usa mucho el método for() durante todo su desarrollo, cabe recalcar que se usaron códigos y funciones de una práctica anterior, pues de esa manera se facilitaba todo el proceso, en todas las funciones usamos la función o propiedad cells, pues asi decimos en que celda pasara que este se pueda editar.
Resultados
Código
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <iostream.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
double a[3][3];
double b[3][3];
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Close(); 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Salir1Click(TObject *Sender)
{
Close(); 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Transpuesta1Click(TObject *Sender)
{
for(int i=0; i<3;i++)
{
 for(int j=0;j<3;j++)
 {
 a[i][j]=(StringGrid1->Cells[i][j]).ToDouble();
 }
}
for(int i=0; i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 b[i][j]=a[j][i];
 }
 }
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 StringGrid2->Cells[i][j]=(b[i][j]);
 }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Cofactores1Click(TObject *Sender)
{
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 a[i][j]=(StringGrid1->Cells[i][j]).ToDouble();
 }
 }
double a11=0;
double a12=0;
double a13=0;
double a12aux=0;
double a21=0;
double a22=0;
double a23=0;
double a21aux=0;
double a23aux=0;
double a31=0;
double a32=0;
double a33=0;
double a32aux=0;
a11=(a[1][1]*a[2][2])-(a[2][1]*a[1][2]);
a12aux=(a[1][0]*a[2][2])-(a[2][0]*a[1][2]);
a12=a12aux*(-1);
a13=(a[1][0]*a[2][1])-(a[2][0]*a[1][1]);
a21aux=(a[0][1]*a[2][2])-(a[2][1]*a[0][2]);
a21=a21aux*(-1);
a22=(a[0][0]*a[2][2])-(a[2][0]*a[0][2]);
a23aux=(a[0][0]*a[2][1])-(a[2][0]*a[0][1]);
a23=a23aux*(-1);
a31=(a[0][1]*a[1][2])-(a[1][1]*a[0][2]);
a32aux=(a[0][0]*a[1][2])-(a[1][0]*a[0][2]);
a32=a32aux*(-1);
a33=(a[0][0]*a[1][1])-(a[1][0]*a[0][1]);
b[0][0]=a11;
b[0][1]=a12;
b[0][2]=a13;
b[1][0]=a21;
b[1][1]=a22;
b[1][2]=a23;
b[2][0]=a31;
b[2][1]=a32;
b[2][2]=a33;
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 StringGrid2->Cells[i][j]=(b[i][j]);
 }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Determinante1Click(TObject *Sender)
{
double Det = 0;
double Detres=0;
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 a[i][j]=(StringGrid1->Cells[i][j]).ToDouble();
 }
 }
Det = (a[0][0]*a[1][1]*a[2][2])+(a[0][1]*a[1][2]*a[2][0])+(a[0][2]*a[1][0]*a[2][1]);
Detres = (a[2][0]*a[1][1]*a[0][2])+(a[2][1]*a[1][2]*a[0][0])+(a[2][2]*a[1][0]*a[0][1]);
Det = Det-Detres;
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 b[i][j]=0;
 }
 }
b[1][1]= Det;
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 StringGrid2->Cells[i][j]=(b[i][j]);
 }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(int i=0;i<3;i++)
 {
 for(int j=0;j<3;j++)
 {
 a[i][j] = 0;
 b[i][j] = 0;
 }
 }
}
//---------------------------------------------------------------------------
Ejecución

Otros materiales