Código C:
Ver original#include<stdio.h>
#include<stdlib.h>
int menu();
void leerv(int t,int *a);
void sumarv(int t,int *a,int *b);
void imprv(int t,int *a);
void leerm(int f,int c,int **a);
void imprm(int f,int c,int **a);
void sumam(int f,int c,int **a,int **b);
void multim(int m,int n, int s,int **b,int **d,int **e);
int menu(){
int x;
do{
printf(" 1.- Suma de Vectores\n"); printf(" 2.- Suma de Matrices\n"); printf(" 3.- Multiplicacion de Matrices\n"); printf(" Elige una opcion => "); }while(x<1&&x>4);
return x;
}
void leerv(int t,int *a){
for(int i=0;i<t;i++){
}
}
void sumarv(int t,int *a,int *b){
for(int i=0;i<t;i++){
a[i]=a[i]+b[i];
}
}
void imprv(int t,int *a){
for(int i=0;i<t;i++){
}
}
void leerm(int f,int c,int **a){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
}
}
}
void imprm(int f,int c,int **a){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
}
}
}
void sumam(int f,int c,int **a,int **b){
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
a[i][j]=a[i][j]+b[i][j];
}
}
}
void multim(int m,int n,int s,int **b,int **d,int **e){
for(int i=0;i<m;i++){
for(int j=0;j<s;j++){
for(int k=0;k<n;k++){
printf("i=%d k=%d j=%d \n", i
, k
, j
); e[i][j]=e[i][j]+b[i][k]*d[k][j];
}
}
}
}
int ** New_Matriz(int p,int q)
{
int ** m , j;
m
=(int **)malloc(sizeof(int *)*p
); for(j=0;j<p;j++)
m
[j
]=(int *)malloc(sizeof(int)*q
); return m;
}
void To_Cero(int ** m,int p,int q)
{
int i, j;
for(i=0;i<p;i++)
for(j=0;j<q;j++)
m[i][j]=0;
return;
}
main(){
int c,f,i,j,x,t,m,n,q,s;
int *a,**b,**e,*d,**g;
x=menu();
switch(x){
case 1: printf("\nDame el tamaño del Vector = "); a
=(int *)malloc(sizeof(int)*t
); d
=(int *)malloc(sizeof(int)*t
); printf("\nElementos del Vector A\n"); leerv(t,a);
printf("\nElementos del Vector B\n"); leerv(t,d);
imprv(t,a);
imprv(t,d);
sumarv(t,a,d);
imprv(t,a);
break;
case 2: printf("\nDame el Numero de Filas de la Matriz = "); printf("\nDame el Numero de Columnas de la Matriz = "); b
=(int **)malloc(sizeof(int *)*f
); e
=(int **)malloc(sizeof(int *)*f
); for(j=0;j<c;j++){
b
[j
]=(int *)malloc(sizeof(int)*c
); e
[j
]=(int *)malloc(sizeof(int)*c
); }
printf("\nElementos de la Matriz A\n"); leerm(f,c,b);
printf("\nElementos de la Matriz B\n"); leerm(f,c,e);
imprm(f,c,b);
imprm(f,c,e);
sumam(f,c,b,e);
imprm(f,c,b);
break;
case 3: do{
printf("Numero de Filas de la Matriz A = "); printf("Numero de Columnas de la Matriz A = "); printf("Numero de Filas de la Matriz B = "); printf("Numero de Columnas de la Matriz B = "); }while(n!=q);
b = New_Matriz(m,n);
e = New_Matriz(q,s);
g = New_Matriz(m,s);
To_Cero(g,m,s);
printf("\nElemetos de la Matriz A\n"); leerm(m,n,b);
printf("\nElementos de la Matriz B\n"); leerm(q,s,e);
multim(m,n,s,b,e,g);
imprm(m,s,g);
break;
}
}
Tenes un problema al reservar memoria. Al querer ahorrar tiempo reservando memoria estabas metiendo la pata. Fíjate que ahí cree un función que según dos entero reserva memoria para una matriz. Eso aclarece las cosas un poco.