Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Dirijido a David

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Dirijido a David Responder citando

Ah!!! ya se como hacer la division de matrices La solución es sencilla; el dividir una matriz A entre una matriz B es equivalente
a multiplicar la matriz A por la inversa de la matriz B, de tal manera que lo
que hay que hacer es calcular la inversa de la matriz B y luego multiplicarla
por la matriz , pero como cosa rara tengo una duda, lo que pasa es que no se como colocar lo que me mandaste y no se como hacer la +, - ,* lo realice en C pero no se como hacerlo en el builder...... el el builder no se mucho lo poco que se es lo que dicen los tutoriales te escribo esto a ver si me puedes orientar en hacer el programa de matrices.....

gracias......

Volver arriba
Mensaje    Asunto: Dirijido a David Responder citando

Si las funciones las tienes implementadas en C, la cosa no es más que motar una "carcasa" para el asunto. Si te gusta la idea de hacerlo en plan Excel (con una rejilla) te puedo dar las recomendaciones iniciales:

1.Crea una nueva aplicación (File -> New -> Aplication). Tendrás una Ficha, formulario nuevo Form1
2. Inserta la rejilla desde la paleta de componentes, la pestaña Aditional. Esto es, un componente TStandarGrid, como el del dibujo . Para hacerlo tienes que hacer doble click sobre el (aparecerá sobre el formulario), consulta en object inspector las propiedades que te interesan para el tamaño de la rejilla (ColumnCount o RowCount).
3. Ahora tienes que comunicarte con el usuario, hay muchas maneras, yo te indico una sencilla. Inserta 6 botones (en la pestaña standard el sexto icono el que pone OK). Cambia sus nombres con la propiedad caption, llámalos O.K., +, -, *, / e =. La idea es la siguiente, el usuario mete la matrices en la rejilla y cuando quiere empezar una operación selecciona la matriz inicial y pulsa O.K., luego pulsa el botón con la operación que desea selecciona la segunda matriz de la "cuenta" y pulsa = y obtiene el resultado, por ejemplo al lado derecho de la última matriz. Ahora ya no es sólo C, es programación por eventos (cada uno de los cuales sale en el object inspector al señalar cualquier componente) y hay que gestionarlos...
4. Vamos con un ejemplo. Seleciona el boton al que le pusieras O.K. en el caption. Después haz doble click sobre el, se te abrirá una ventana de código. El cursor estará dentro de una función(entre{ y }), es ahí donde meterías tu código. Bueno, para las operaciones que quieres realizar necesitas dos matrices, para ello necesitas declarar los punteros que las alberguen (si quieres tenerlas en memoria y pasarlas como argumento de las funciones creadas anteriormente) , tienen que ser variables globales, así que declaralas donde indica...

code:
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
/*AQUI por ejemplo*/long double **A,**B;
int n,m,n1,m1;/*las dos matrices y sus dimensiones*/
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
...


...seguimos, estabamos gestionando el click del botón, OK. Al pulsar el botón en la rejilla estará la matriz que el usuario quiere utilizar como primer elemento de la operación, para capturla (meterla en memoria) usa este codigo dentro de TForm1::Button1Click (te lo copio entero -incluida la llamada a la función-):
code:
void __fastcall TForm1::Button1Click (
TObject *Sender)
{
long x1,y1,x2,y2;//Definen las dimensiones matriz, el punto superior izquierdo y el inferior derecho
x1=Form1->StringGrid1->Selection.Left;
y1=Form1->StringGrid1->Selection.Top;
x2=Form1->StringGrid1->Selection.Right;
y2=Form1->StringGrid1->Selection.Bottom;
int dim=x2-x1+1;/*Aquí usa tu n y m si tu matriz no es cuadrada*/
A=new long double*[dim];/*Ojo, si tu matriz no es cuadrada usa n,m*/
for(int i=0;i<dim;i++)
A[i]=new long double[dim];
for(int i=0;i<dim;i++) //guardamos la selección del usuario
for(int j=0;j<dim;j++)
A[i][j]=Form1->StringGrid1->Cells[x1+i][y1+j].ToDouble();//Obtenemos los punto de la rejilla, lo de .ToDouble es porque en la rejilla no son números sino AnsiStrings
}


Bueno ahora creo que estas más orientada -espero-, depués tendrías que gestionar la segunda matriz y guardar en una variable cual ha sido el botón pulsado, si el de suma o el de resta, etc... finalmete cuando pulses = tendrás las dos matrices en memoria así que sería llamar a la funcion que ya tienes programada... y escribir el resultado, para ello, te doy un ejemplo :
code:

Form1->StringGrid1->Cells[1][1]=FloatToStr(A[i][j]);


y bueno si hay errores por no reconecer algo es que te faltan bibliotecas, ya sabes pulsa F1 y tienes la ayuda para buscar en que biblio está tu función, ¡ánimo!.
Por otra parte si no te gusta la idea de la parrilla, puedes utilizar un control TEdit, y que el usuario escriba con una sintexis determinada, por ejemplo la del matlab I=[1 0; 0 1] que sería la identida de dimensión 2...
David.
P.D. La próxima, si la hay, que sea una duda concretilla (porfa). Por cierto, usa el botón de Post Reply y así no tendrás que abrir un foro cada vez que tengas un "poblema". Espero haber sido de alguna utilidad.
Volver arriba
Mensaje    Asunto: Dirijido a David Responder citando

Uuups!

...perdona en el paso 2 quería decir TStringGrid y no TStandarGrid...

Hasta Luego

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.