¡Vale!
Para eso se me ocurren dos cosas:
1. Desarrollar una interfaz gráfica "dibujando" tu las matrices con métodos como Pixels, ..., y cojer los datos por una línea de comandos que tu interpretes (costoso, tipo matlab o más bien derive)2. Usar un componente de rejilla y hacerlo en plan Excel. Esto es práctico para tomar datos. La forma de expresarlo después es cosa tuya... Esto lo he estado haciendo últimamente. Lo primero que tendrías que insertar sería el componenete de rejilla, esto es por ejemplo un TStandGrid. (En la paleta Aditional el 4º icono) Una vez hecho esto te paso el siguiente ejemplo de código, esto se realiza cuando le das a un botón del menú (se supone que el usuario a seleccionado algo en la rejilla)
code:
void __fastcall TMainForm::Diagonalizacinmatrizsimtrica1Click(
TObject *Sender)
{
long x1,y1,x2,y2;
x1=((TMDIChild *)ActiveMDIChild)->StringGrid1->Selection.Left;
y1=((TMDIChild *)ActiveMDIChild)->StringGrid1->Selection.Top;
x2=((TMDIChild *)ActiveMDIChild)->StringGrid1->Selection.Right;
y2=((TMDIChild *)ActiveMDIChild)->StringGrid1->Selection.Bottom;
int dim=x2-x1+1;
long double **mat,**matpaso;//Reserva dinámica de memoria...
mat=new long double*[dim];
matpaso=new long double*[dim];
for(int i=0;i<dim;i++)
{
mat[i]=new long double[dim];
matpaso[i]=new long double[dim];
} //...
for(int i=0;i<dim;i++) //Hacemos de la matriz de paso la identidad, y guardamos la selección del usuario
for(int j=0;j<dim;j++)
{
mat[i][j]=((TMDIChild *) ActiveMDIChild)->StringGrid1->Cells[x1+i][y1+j].ToDouble();
if(i==j)
matpaso[i][j]=1;
else
matpaso[i][j]=0;
} //...
Jacobi(mat,matpaso,dim);//Esta función realiza un cálculo matricial
for(int i=0;i<dim;i++)//Sacamos el resultado
{
((TMDIChild *)ActiveMDIChild)->StringGrid1->Cells[x1+dim+i][y1]=FloatToStr(mat[i][i]);
for(int j=0;j<dim;j++)
((TMDIChild *)ActiveMDIChild)->StringGrid1->Cells[x1+dim+i][y1+1+j]=FloatToStr(matpaso[i][j]);
}
for(int i=0;i<dim;i++)//Liberado de memoria...
{
delete [] mat[i];
delete [] matpaso[i];
}
delete [] mat;
delete [] matpaso;//...
}
}
Lo he recortado y apañado para ti, quizas se me fuera algún "}", pero funciona... Espero que te sirva de algo. Si no tienes algo claro o quieres algo más escribe por aquí.
David