Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: UltimateDragoon en 3 Octubre 2011, 20:58 pm



Título: Apuntador a arreglo bidimensional en c
Publicado por: UltimateDragoon en 3 Octubre 2011, 20:58 pm
hola, la verdad apenas comienzo en este mundo de programacion en c, pero estoy algo atorado con este archivo, se que se puede hacer sin apuntadores pero me interesa saber como hacerlo con apuntadores y lo tengo masomenos asi

Código
  1. #include <stdio.h>
  2. #include <cstdlib>
  3. #include <iostream>
  4. int imp(int (*nums)[3][5])
  5. {
  6. int x=0, y=0;
  7. /*system("clear");
  8. for(y=0;y<3;y++)
  9. {
  10. for(x=0;x<5;x++)
  11. {
  12. printf("dato %d del arreglo #%d:\t%d\n", x+1, y+1, *nums[y][x]);
  13. }
  14. }*/
  15. printf("\tSUMA DE ARREGLOS:\n---------------------------------------------\n\tC\t=\tA\t+\tB\n---------------------------------------------\n");
  16. for(x=0;x<5;x++)
  17. {
  18. printf("\t%d\t\t%d\t%d\n", *nums[2][x], *nums[0][x], *nums[1][x]);
  19. }
  20. return 0;
  21. }
  22.  
  23. int main()
  24. {
  25. int arr[3][5], x=0, y=0;
  26. for(y=0;y<2;y++)
  27. {
  28. for(x=0;x<5;x++)
  29. {
  30. printf("Ingresa el dato %d del arreglo #%d\n", x+1, y+1);
  31. scanf("%d", &arr[y][x]);
  32. }
  33. }
  34. for(x=0;x<5;x++)
  35. {
  36. arr[2][x]=arr[0][x] + arr[1][x];
  37. }
  38. //system("clear");
  39. imp(&arr);
  40. //system("PAUSE");
  41. return 0;
  42. }

En teoria solo debe sumar los 5 elementos de cada dimension (en "0" y "1") y guardarlo en el restante (2), todo va bien exepto cuando mando para la impresion en otra funcion, se que se pueden hacer de otras formas evitando el hecho de enviar la direccion del arreglo bidimencional pero como mecione antes me interesa hacerlo asi para aprender, cualquier ayuda siempre sera bienvenida y gracias de antemano


Título: Re: Apuntador a arreglo bidimensional en c
Publicado por: LearningSpanishProgrammer en 3 Octubre 2011, 22:43 pm
Código:
int implementation(int num[][5])
o
int implementation(int num[5][5])

Pero, se quieres usar su sintaxis, entonces:

Código:
printf("\t%d\t\t%d\t%d\n", (*nums)[2][x], (*nums)[0][x], (*nums)[1][x]);

Por que tu estas accediendo el entero como un puntero

Código:
*nums[2][x] generates *(nums[2][x])

Vea esta: http://foro.elhacker.net/programacion_cc/ayuda_con_tablas_bidimensionales-t339047.0.html;msg1663422#msg1663422
y esta: http://foro.elhacker.net/programacion_cc/duda_con_arreglo_bidimensional_dinamico_en_ide_devc-t337905.0.html;msg1658904#msg1658904


Título: Re: Apuntador a arreglo bidimensional en c
Publicado por: UltimateDragoon en 3 Octubre 2011, 23:05 pm
muchas gracias, eso resolvio el problema