Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yiti007 en 8 Mayo 2010, 12:32 pm



Título: [Solucionado]Problemilla al acceder a una matriz dinamica
Publicado por: yiti007 en 8 Mayo 2010, 12:32 pm

ERROR MIO DE SINTAXIS, -.-''

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. // FUNCION que escanea un numero entero y positivo que despues retorna
  6. int mayor0();
  7. void rellenar(int **,int,int);
  8.  
  9. int main()
  10. {
  11. int **matriz;
  12. int fila,columna,i;
  13.  
  14. puts("Introduzca la cantidad de filas deseadas(numero > 0)");
  15. fila = mayor0();
  16. matriz = (int **)malloc(fila*sizeof(int*));
  17. puts("Introduzca la cantidad de columnas deseadas(numero > 0)");
  18. columna = mayor0();
  19. for(i=0 ; i<fila ; i++)
  20. *(matriz+i) = (int*)malloc(columna*sizeof(int));
  21. rellenar(matriz,fila,columna);
  22. }
  23.  
  24. void rellenar(int **matriz,int fila,int columna)
  25. {
  26. int i, max = fila*columna;
  27. for(i=0 ; i<max ; i++)
  28. *(*(matriz+i)) = mayor0();  
  29. }
  30.  
  31. int mayor0()
  32. {
  33. int temp = -1;
  34. do
  35. {
  36. scanf("%d",&temp);
  37. fflush(stdin);
  38. }
  39. while(temp<=0);
  40. return temp;
  41. }
  42.  
  43.  


Título: Re: Problemilla al acceder a una matriz dinamica
Publicado por: Lambda en 8 Mayo 2010, 12:51 pm
mayor0 es una funcion se te ha olvidado poner el () xD


Título: Re: [Solucionado]Problemilla al acceder a una matriz dinamica
Publicado por: leogtz en 8 Mayo 2010, 19:10 pm
Estás reservando espacio mal para la matriz:

Debiera ser así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /*  Esto lo cambias por lo que quieras */
  4. #define FILAS 2
  5. #define COLS 2
  6. int main(void)
  7. {
  8. signed int **matriz;
  9. unsigned int i;
  10. /*  En caso de haber error al alojar: */
  11. if((matriz = malloc(sizeof *matriz * FILAS)) == NULL)
  12. {
  13. perror("Error : ");
  14. exit(EXIT_FAILURE);
  15. }
  16. for(i = 0; i < FILAS; i++)
  17. if((matriz[i] = malloc(sizeof *matriz[i] * COLS)) == NULL)
  18. {
  19. perror("Error : ");
  20. exit(EXIT_FAILURE);
  21. }
  22. return EXIT_SUCCESS;
  23. }

El malloc no necesita el casting.