comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Matrices con punteros en C

  • 3 Respuestas
  • 2080 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado S10RIN

  • *
  • Underc0der
  • Mensajes: 23
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« en: Noviembre 27, 2013, 08:46:05 pm »
Hola muy buenas acaba de surgirme una duda en C

Tengo esta funcion hecha con punteros hecha en C y el problema es que al invocarla

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",SumarMatrices(mat1,mat2,dim1,dim2))

 solo muestra el primer resultado de la operacion y no el resto(PD: con char me funciona porque imprimo toda la cadena con %s)

Código: C
  1. int SumarMatrices(int *mat1, int *mat2,int dim1[],int dim2[]){
  2.    
  3.         int *matriz_suma;
  4.         int i,j;
  5.  
  6.         matriz_suma=(int*)No tienes permisos para ver links. Registrate o Entra con tu cuenta(dim1[0]*dim2[0]*sizeof(int));
  7.         for(i=0;i<dim1[0];i++){
  8.                 for(j=0;j<dim2[0];j++){
  9.                
  10.                    *(matriz_suma+i*dim2[i]+j)=+*(mat2+i*dim2[i]+j)+*(mat2+i*dim2[i]+j);                        //calculo de cada elemento
  11.                    
  12.                
  13.                 }
  14.         }
  15.         return matriz_suma;
  16. }
« Última modificación: Febrero 27, 2016, 09:59:47 am por Gabriela »

Desconectado Alejandro_N12

  • *
  • Underc0der
  • Mensajes: 28
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Noviembre 27, 2013, 09:16:38 pm »
Podes poner todo el código entero así lo copio y pruebo?

Desconectado S10RIN

  • *
  • Underc0der
  • Mensajes: 23
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Noviembre 27, 2013, 09:28:18 pm »
Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /*
  5.  *
  6.  */
  7.  
  8. int SumarMatrices(int *mat1, int *mat2,int dim1[],int dim2[]){
  9.    
  10.         int *matriz_suma;
  11.         int i,j;
  12.  
  13.         matriz_suma=(int*)No tienes permisos para ver links. Registrate o Entra con tu cuenta(dim1[0]*dim2[0]*sizeof(int));
  14.         for(i=0;i<dim1[0];i++){
  15.                 for(j=0;j<dim2[0];j++){
  16.                
  17.                    *(matriz_suma+i*dim2[i]+j)=*(mat2+i*dim2[0]+j)+*(mat2+i*dim2[0]+j);
  18.                    //printf("mat[%d][%d]=%d\n",i,j,*(matriz_suma+i*dim2[i]+j));
  19.                
  20.                 }
  21.         }
  22.         return *matriz_suma;
  23. }
  24.  
  25.  
  26.  
  27. int main(int argc, char** argv) {
  28.  
  29.     int i,j,numero;
  30.     int *mat1,*mat2;
  31.     int dim1[2],dim2[2];
  32.    
  33.     FILE*datos;
  34.     datos=No tienes permisos para ver links. Registrate o Entra con tu cuenta("datos.dat","r+");
  35.    
  36.  
  37.     No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&dim1[0]);
  38.     No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&dim2[0]);
  39.     mat1=(int*)No tienes permisos para ver links. Registrate o Entra con tu cuenta(dim1[0]*dim2[0]*sizeof(int));
  40.    
  41.         for(i=0;i<dim1[0];i++){
  42.                 for(j=0;j<dim2[0];j++){
  43.                         No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&numero);
  44.                         *(mat1+i*dim2[0]+j)=numero;
  45.                 }
  46.         }
  47.         No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&dim1[1]);
  48.         No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&dim2[1]);
  49.     mat2=(int*)No tienes permisos para ver links. Registrate o Entra con tu cuenta(dim1[1]*dim2[1]*sizeof(int));
  50.    
  51.         for(i=0;i<dim1[1];i++){
  52.                 for(j=0;j<dim2[1];j++){
  53.                         No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos,"%d",&numero);
  54.                         *(mat2+i*dim2[1]+j)=numero;
  55.                 }
  56.         }
  57.    
  58.        
  59.     No tienes permisos para ver links. Registrate o Entra con tu cuenta(datos);
  60.    
  61.    
  62.    
  63.      MultiplicarMatrices(mat1,mat2,dim1,dim2);  
  64.    
  65.          
  66.    
  67.    
  68.     return (EXIT_SUCCESS);
  69. }





PD: Los datos de archivos.dat tienes que poner las dimensiones en una fila y los datos en otra y separados por espacios
Ej para dos matrices 1x3 y 3x2 seria

1 3
6 4 8
3 2
2 5 3 4 0 2

seria como multiplicar

( 6 4 8 )*( 2 5 )
              ( 3 4 )
              ( 0 2 )


Muchas gracias si funciona avisame
« Última modificación: Febrero 08, 2014, 04:36:23 pm por Expermicid »

Desconectado Alejandro_N12

  • *
  • Underc0der
  • Mensajes: 28
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #3 en: Noviembre 28, 2013, 12:45:53 am »
Mañana voy a revisar el código, lo que si en ese .dat que pusiste no vas a poder sumar las matrices

Citar
Los datos de archivos.dat tienes que poner las dimensiones en una fila y los datos en otra y separados por espacios
Ej para dos matrices 1x3 y 3x2 seria

1 3
6 4 8
3 2
2 5 3 4 0 2

Esa matriz solo se puede multiplicar, para que se puedan sumar ambas matrices tienen que ser iguales, mañana pruebo el código que pusiste y te aviso, lo que si antes de sumar la matriz vas a tener que verificar que sean iguales, o sea

Código: C
  1. int SumarMatrices (int *matR, int *mat1, int *mat2, mat1x, mat1y, mat2x, mat2y)
  2. {
  3.    if (mat1x== mat2x) && (mat1y==mat2y)
  4.       {      
  5.         for (int x=0; x<=mat1x; x++)
  6.         {
  7.            for (int y=0; y<=mat1y; y++)
  8.            matR[x][y] = mat1[x][y] + mat2[x][y]; //Aca modifica para la suma con punteros, no me acuerdo si poniendo el * solo era suficiente
  9.         }
  10.        return 0;
  11.       }
  12.  
  13. return 1;
  14. }
  15.  


Te dejo esto tambien que encontra por ahi, tal vez te sirva

Código: C
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int suma(int,int);
  7. int **CrearMatriz(int,int);
  8. int **LlenarMatriz(int,int);
  9. int **Suma(int**,int**,int,int);
  10.  
  11. int main()
  12. {
  13. cout<<"Suma de Matrices con punteros"<<endl<<endl;
  14. int filas,colum;
  15. cout<<"Introduzca el numero de filas: ";
  16. cin>>filas;
  17. cout<<"Introduzca el numero de columnas: ";
  18. cin>>colum;
  19.  
  20. int **matriz1 = CrearMatriz(filas,colum);
  21. int **matriz2 = CrearMatriz(filas,colum);
  22. int **final = CrearMatriz(filas,colum);
  23. cout<<"\nMatriz1\n";
  24. matriz1 = LlenarMatriz(filas,colum);
  25. cout<<"\nMatriz2\n";
  26. matriz2 = LlenarMatriz(filas,colum);
  27.  
  28. final = Suma(matriz1, matriz2, filas, colum);
  29.  
  30. cout<<"\nLa suma es:\n";
  31.  
  32. for(int i=0;i<filas;i++)
  33. {
  34. for(int j=0;j<colum;j++)
  35. {
  36. cout<<final[i][j];
  37. if(j < colum-1)
  38. cout<<", ";
  39. }
  40. cout<<endl;
  41. }
  42. return 0;
  43. }
  44.  
  45. int **CrearMatriz(int f, int c)
  46. {
  47. int **matriz = new int*[f];
  48. for (int i = 0; i < f; ++i)
  49. matriz[i] = new int[c];
  50. return matriz;
  51. }
  52.  
  53. int **LlenarMatriz(int f, int c)
  54. {
  55. int **matriz = CrearMatriz(f,c);
  56. for(int i=0;i<f;i++)
  57. {
  58. for(int j=0;j<c;j++)
  59. {
  60. cout<<"Elemento "<<i+1<<","<<j+1<<": ";
  61. cin>>matriz[i][j];
  62. }
  63. }
  64. return matriz;
  65. }
  66.  
  67. int **Suma(int **m1,int **m2,int f, int c)
  68. {
  69. int **matriz = CrearMatriz(f,c);
  70. for(int i=0;i<f;i++)
  71. for(int j=0;j<c;j++)
  72. matriz[i][j] = m1[i][j]+m2[i][j];
  73. return matriz;
  74. }
  75.  
  76.  
« Última modificación: Febrero 08, 2014, 04:36:46 pm por Expermicid »

 

¿Te gustó el post? COMPARTILO!



Colabórame con algunos problemas: vectores, matrices, etc. (nivel básico)

Iniciado por darkangel2125

Respuestas: 7
Vistas: 3653
Último mensaje Agosto 20, 2011, 02:16:06 pm
por neox
[SOLUCIONADO] Duda Multiplicacion de Matrices

Iniciado por ZanGetsu

Respuestas: 4
Vistas: 1620
Último mensaje Diciembre 01, 2013, 09:27:48 pm
por ZanGetsu
[SOLUCIONADO] Duda con Matrices

Iniciado por [Z]tuX

Respuestas: 2
Vistas: 1762
Último mensaje Abril 09, 2012, 11:27:51 pm
por [Z]tuX