Hola haber si alguien me puede ayudar nesesito este algoritmo (multiplicacion de matrices) en forma recursiva...
void ingreso(int m[][30],int f,int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= ";
cin>>m[j];
}
}
}
void mostrar(int m[][30],int f, int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= ";
cout<<m[j]<<endl;
}
}
}
void multiplica(int m1[][30],int m2[][30],int p[][30],int f1,int c1,int f2,int c2){
for(int i=0;i<f1;i++){
for(int j=0;j<c2;j++){
for(int k=0;k<c1;k++){
p[j]=p[j]+(m1[k])*(m2[k][j]);
}
}
}
cout<<"\n\n\t\tEL PRODUCTO DE VECTORES ES\n\n";
mostrar(p,f1,c2);
}
void inicializaValoresEnCero(int p[][30],int f,int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
p[j]=0;
}
}
}
int main(){
int M1[30][30],M2[30][30],P[30][30],f1,c1,f2,c2;
cout<<"\n\tPrimera Matriz"<<endl;
do{
cout<<"Ingrese el numero de filas ";
cin>>f1;
}while(f1<1||f1>30);
do{
cout<<"Ingrese el numero de columnas ";
cin>>c1;
}while(c1<1||c1>30);
ingreso(M1,f1,c1);
cout<<"\n\tSegunda Matriz"<<endl;
do{
cout<<"Ingrese el numero de filas ";
cin>>f2;
}while(f2<1||f2>30);
do{
cout<<"Ingrese el numero de columnas ";
cin>>c2;
}while(c2<1||c2>30);
ingreso(M2,f2,c2);
if(c1==f2){
cout<<"Se puede multiplicar"<<endl;
inicializaValoresEnCero(P,f1,c2);
multiplica(M1,M2,P,f1,c1,f2,c2);
}
else
cout<<"NO Se puede multiplicar"<<endl;
system("pause");
return 0;
}
void ingreso(int m[][30],int f,int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= ";
cin>>m[j];
}
}
}
void mostrar(int m[][30],int f, int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
cout<<"Valor ["<<(i+1)<<"]["<<(j+1)<<"]= ";
cout<<m[j]<<endl;
}
}
}
void multiplica(int m1[][30],int m2[][30],int p[][30],int f1,int c1,int f2,int c2){
for(int i=0;i<f1;i++){
for(int j=0;j<c2;j++){
for(int k=0;k<c1;k++){
p[j]=p[j]+(m1[k])*(m2[k][j]);
}
}
}
cout<<"\n\n\t\tEL PRODUCTO DE VECTORES ES\n\n";
mostrar(p,f1,c2);
}
void inicializaValoresEnCero(int p[][30],int f,int c){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
p[j]=0;
}
}
}
int main(){
int M1[30][30],M2[30][30],P[30][30],f1,c1,f2,c2;
cout<<"\n\tPrimera Matriz"<<endl;
do{
cout<<"Ingrese el numero de filas ";
cin>>f1;
}while(f1<1||f1>30);
do{
cout<<"Ingrese el numero de columnas ";
cin>>c1;
}while(c1<1||c1>30);
ingreso(M1,f1,c1);
cout<<"\n\tSegunda Matriz"<<endl;
do{
cout<<"Ingrese el numero de filas ";
cin>>f2;
}while(f2<1||f2>30);
do{
cout<<"Ingrese el numero de columnas ";
cin>>c2;
}while(c2<1||c2>30);
ingreso(M2,f2,c2);
if(c1==f2){
cout<<"Se puede multiplicar"<<endl;
inicializaValoresEnCero(P,f1,c2);
multiplica(M1,M2,P,f1,c1,f2,c2);
}
else
cout<<"NO Se puede multiplicar"<<endl;
system("pause");
return 0;
}