Foros del Web » Programación para mayores de 30 ;) » C/C++ »

AYUDA con C - suma matrices

Estas en el tema de AYUDA con C - suma matrices en el foro de C/C++ en Foros del Web. Buenas, tengo q hacer este problema: Realiza una funcion que sume dos matrices de dos dimensiones. A la funcion se le pasara como argumentos la ...
  #1 (permalink)  
Antiguo 03/02/2007, 18:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
AYUDA con C - suma matrices

Buenas,

tengo q hacer este problema:

Realiza una funcion que sume dos matrices de dos dimensiones. A la funcion se le pasara como argumentos la direccion de las dos matrices a sumar y sus dimensiones. El resultado lo devolvera sobre la primera matriz.

Lo que no entiendo bien, es como pasar la direccion de las matrices como argumento a una funcion, si alguien me puede explicar un poco como pasar la direccion de la matriz y como declarar la matriz para pasarla asi... me haria un gran favor.

un saludo
  #2 (permalink)  
Antiguo 03/02/2007, 19:45
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Re: AYUDA con C - suma matrices

Creo que en las FAQs hablan de punteros y eso...o si no buscate un buen tutorial de punteros, a la final todo se reduce a eso.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #3 (permalink)  
Antiguo 09/02/2007, 09:04
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: AYUDA con C - suma matrices

Creo que seria algo asi, no lo he compilado pero me parece que esta bien, al estar trabajando con matrices el pasaje de parametros es simulado por direccion o sea que toda modificacion que hagas a las matrices dentro de la funcion quedaran afectadas en el main().
void funcion suma(int A[2][2],int B[2][2])
{
int C[2][2];
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
C[i][j]=A[i][j]+B[i][j];
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
A[i][j]=C[i][j];
}
return;
}//end of funcion suma
void main(void)
{
int A[2][2], int B[2][2];//declaro las matrices
//cargo los valores de la matriz A: despues hace lo mismo con la B
for(i=0;i<2;i++)
{cout<<"Ingrese valor fila: "<<i+1;
for(j=0;i<2;i++)
{
cout<<"Columna: "<<j+1;
cin>>A[i][j];
}
}
//llama a la funcion Suma:
suma(A,B);
//luego haces otro for para mostrar la matriz A
Espero que te sirva
}//fin main
  #4 (permalink)  
Antiguo 09/02/2007, 11:48
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Re: AYUDA con C - suma matrices

Cita:
al estar trabajando con matrices el pasaje de parametros es simulado por direccion o sea que toda modificacion que hagas a las matrices dentro de la funcion quedaran afectadas en el main().
No hay tal cosa como "simulado por direccion", los arreglos siempre pasan por direccion.
Código:
void funcion suma(int A[2][2],int B[2][2])
No es necesario especificar la cantidad de elementos de la primera dimension:
Código:
void funcion suma(int A[][2],int B[][2])
Sin embargo nada te impide hacerlo. Aqui te dejo la funcion suma hecha de mejor manera, si vas a dejar la suma en la matriz A este codigo te va mejor
Código:
void funcion suma(int A[][2], int B[][2])
{
  for(int i=0;i<2;i++)
     for(int j=0;j<2;j++)
        A[i][j]+=B[i][j];
}//end of funcion suma
Deberias tratar de hacerlo mas general, es decir, no solo para matrices 2x2, para nxm o fijar una especie de maxio, el algoritmo es el mismo para todos los casos.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 09/02/2007, 23:21
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: AYUDA con C - suma matrices

Cita:
Iniciado por _Lucifer_ Ver Mensaje
No hay tal cosa como "simulado por direccion", los arreglos siempre pasan por direccion.
Código:
void funcion suma(int A[2][2],int B[2][2])
No es necesario especificar la cantidad de elementos de la primera dimension:
Código:
void funcion suma(int A[][2],int B[][2])
Sin embargo nada te impide hacerlo. Aqui te dejo la funcion suma hecha de mejor manera, si vas a dejar la suma en la matriz A este codigo te va mejor
Código:
void funcion suma(int A[][2], int B[][2])
{
  for(int i=0;i<2;i++)
     for(int j=0;j<2;j++)
        A[i][j]+=B[i][j];
}//end of funcion suma
Deberias tratar de hacerlo mas general, es decir, no solo para matrices 2x2, para nxm o fijar una especie de maxio, el algoritmo es el mismo para todos los casos.

Saludos
Ok Todo bien en ese caso como tu dices tratar de hacerlo mas general a la funcion suma deberias pasarle los subindices por que sea cual sea la matriz los "for" que iteran dentro de la matriz lo hacen dos veces cada uno.
Saludos.
  #6 (permalink)  
Antiguo 13/02/2007, 08:43
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 10 meses
Puntos: 28
Re: AYUDA con C - suma matrices

Cita:
Ok Todo bien en ese caso como tu dices tratar de hacerlo mas general a la funcion suma deberias pasarle los subindices por que sea cual sea la matriz los "for" que iteran dentro de la matriz lo hacen dos veces cada uno
Exacto, le pasas el numero de filas y el numero de columnas, ya que deberia ser el mismo para ambas matrices.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #7 (permalink)  
Antiguo 04/12/2011, 21:38
 
Fecha de Ingreso: diciembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: AYUDA con C - suma matrices

buenas noches.

tengo que hacer este problema:

realizar un algoritmo que pida por pantalla los elementos de 2 matrices, (son matrices cudradas, es decir igual filas y columnas), y luego sumar las dos matrices y multiplique las dos matrices.

deben ser capturado con el cin>>, y cout mediantes ciclo for
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:12.