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.