Autor
|
Tema: Enviar una matriz desde una funcion a la matriz del main (Leído 3,969 veces)
|
erest0r
Desconectado
Mensajes: 147
|
Hola, es mi primer post y mi problema es que haciendo una multiplicacion de matrices no entiendo porque la funcion no envia los datos correcto a la funcion del main, este es mi codigo: #include <stdio.h> #include <conio.h> #define N 2 int agregarValores(); int multiplicarMatriz(int matriz1[N][N], int matriz2[N][N]); main(){ int m1[N][N], m2[N][N], m3[N][N], fil, col; m1[N][N]=agregarValores(); m2[N][N]=agregarValores(); m3[N][N]=multiplicarMatriz(m1, m2); printf("\nEl resultado de la matriz es:\n\n"); for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ if(col==0) } } } int agregarValores(){ int fil, col, matriz[N][N]; for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ printf("\nFila %d, Columna %d = ", fil +1, col +1); scanf("%d",&matriz [fil ][col ]); } } return matriz[N][N]; } int multiplicarMatriz(int matriz1[N][N], int matriz2[N][N]){ int fil, col, k, acu, matriz3[N][N]; for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ for(k=0;k<N;k++){ matriz3[fil][col]+=matriz1[fil][k]*matriz2[k][col]; } } } return matriz3[N][N]; }
Gracias de antemano
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
La función devuelve un int, no una matriz entera... Lo que tienes que hacer es pasarla como parámetro en la función. Las matrices por defecto se pasan por referencia y mantienen los cambios tras finalizar la función. Por cierto no uses getch() ni la librería conio, las dos son consideradas malas prácticas de programación
|
|
|
En línea
|
|
|
|
erest0r
Desconectado
Mensajes: 147
|
Gracias de nuevo
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Como te ha indicado amchacon, las matrices se pasan por referencia, es decir, una vez que están definidas en una función, mantienen sus valores en otra función, por lo que no es necesario el return de las funciones que pones de agregar y multiplicar. A cambio esas funciones, además de ser del tipo void ya que no devuelven nada, han de tener como argumento a la matriz que se considere en cada caso.
Quien se debe declarar como función int es main, con su correspondiente return. Cuestiones del estándar de C/C++.
Otro detallito que te faltó es inicializar la matriz producto antes de empezar a realizar la suma de las multiplicaciones de fila por columna:#include <stdio.h> #define N 2 void agregarValores(int matriz[N][N]); void multiplicarMatriz(int matriz1[N][N], int matriz2[N][N],int matriz3[N][N]); int main(){ int m1[N][N], m2[N][N], m3[N][N], fil, col; printf("Matriz 1:\n"); agregarValores(m1); for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ if(col==0) printf("\n"); printf("%d ", m1[fil][col]); } } printf("\nMatriz 2:\n"); agregarValores(m2); for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ if(col==0) printf("\n"); printf("%d ", m2[fil][col]); } } multiplicarMatriz(m1, m2,m3); printf("\nEl resultado de la matriz es:\n\n"); for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ if(col==0) printf("\n"); printf("%d ", m3[fil][col]); } } reurn 0; } void agregarValores(int matriz[N][N]){ int fil, col; for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ printf("\nFila %d, Columna %d = ", fil+1, col+1); scanf("%d",&matriz[fil][col]); } } } void multiplicarMatriz(int matriz1[N][N], int matriz2[N][N],int matriz3[N][N]){ int fil, col, k, acu; for(fil=0;fil<N;fil++){ for(col=0;col<N;col++){ matriz3[fil][col]=0; for(k=0;k<N;k++){ matriz3[fil][col]+=matriz1[fil][k]*matriz2[k][col]; } } } }
Saluditos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
6,007
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
|
oscarpy
|
3
|
8,779
|
9 Abril 2012, 16:23 pm
por Xandrete
|
|
|
Enviar un archivo a una funcion "leer matriz" en c
Programación C/C++
|
Idmus
|
5
|
10,710
|
13 Noviembre 2013, 18:15 pm
por Idmus
|
|
|
Suma de matriz + matriz invertida
Programación C/C++
|
sora_ori
|
3
|
3,306
|
16 Enero 2014, 16:35 pm
por leosansan
|
|
|
Juego con matriz dinámica en c++, función para rrecorrer matriz
Programación C/C++
|
jajaimess
|
1
|
3,847
|
21 Junio 2014, 05:21 am
por .:UND3R:.
|
|