Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: palacio29 en 17 Septiembre 2016, 16:55 pm



Título: Nose en que estoy fallando - Ejercicio con Punteros
Publicado por: palacio29 en 17 Septiembre 2016, 16:55 pm
Hola

Tengo que crear una estructura con 4 variables int , cargar en esas variables 4 valores, mostrarlos por pantalla, y luego crear una funcion que modifique la posicion de  memoria de las variables de la estructura de manera que el numero mas bajo ingresado quede en la variable int "a".

Hasta ahora hice lo siguiente

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef struct
  4. {
  5. int a, b, c, d;
  6. }
  7. t_cuatro;
  8.  
  9. void MODIFICAR(t_cuatro *pa,t_cuatro *pb,t_cuatro *pc,t_cuatro *pd);
  10. int main()
  11. {
  12.    t_cuatro datos;
  13.    printf ("Ingrese 4 numeros: ");
  14.    scanf("%d%d%d%d",&datos.a,&datos.b,&datos.c,&datos.d);
  15.    printf("\nEl numero %d es %p\nEl numero %d es %p\nEl numero %d es %p\nEl numero %d es %p",datos.a,&datos.a,datos.b,&datos.b,datos.c,&datos.c,datos.d,&datos.d);
  16.    MODIFICAR(&datos.a,&datos.b,&datos.c,&datos.d);
  17.    printf("\n");
  18.    printf("\nEl numero %d es %p\nEl numero %d es %p\nEl numero %d es %p\nEl numero %d es %p",datos.a,&datos.a,datos.b,&datos.b,datos.c,&datos.c,datos.d,&datos.d);
  19.  
  20.    return 0;
  21. }
  22.  
  23. void MODIFICAR(t_cuatro *pa, t_cuatro *pb, t_cuatro *pc, t_cuatro *pd)
  24. {
  25.    t_cuatro aux;
  26.  
  27.  
  28.    if(((*pb)< (*pc) ) && ((*pb)< (*pd)) && ((*pb) < (*pa)))
  29.    {
  30.        aux.a=(*pa);
  31.        *pa=*pb;
  32.        *pb=aux.a;
  33.    }
  34.  
  35.    if((*pc)< (*pa) && (*pc)< (*pd) && (*pc) < (*pb))
  36.    {
  37.        aux.a=*pa;
  38.        *pa=*pc;
  39.        *pc=aux.a;
  40.    }
  41.       if((*pd)< (*pa) && (*pd)< (*pc) && (*pd) < (*pb))
  42.    {
  43.        aux.a=*pa;
  44.        *pa=*pd;
  45.        *pd=aux.a;
  46.    }
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54. }
  55.  

El tema es que en la funcion "MODIFICAR" me marca muchisimos errores y no se en que estoy fallando.
 


Título: Re: Nose en que estoy fallando - Ejercicio con Punteros
Publicado por: AlbertoBSD en 18 Septiembre 2016, 16:59 pm
El apuntadador que estas pasando es un int no un t_cuatro

deberia de quedar asi
Código
  1. void MODIFICAR(int *pa, int *pb, int *pc, int *pd);
  2.  
  3. void MODIFICAR(int *pa, int *pb, int *pc, int *pd)
  4. {
  5. t_cuatro aux;
  6.  
  7.  
  8. if(((*pb)< (*pc) ) && ((*pb)< (*pd)) && ((*pb) < (*pa)))
  9. {
  10. aux.a=(*pa);
  11. *pa=*pb;
  12. *pb=aux.a;
  13. }
  14.  
  15. if((*pc)< (*pa) && (*pc)< (*pd) && (*pc) < (*pb))
  16. {
  17. aux.a=*pa;
  18. *pa=*pc;
  19. *pc=aux.a;
  20. }
  21.   if((*pd)< (*pa) && (*pd)< (*pc) && (*pd) < (*pb))
  22. {
  23. aux.a=*pa;
  24. *pa=*pd;
  25. *pd=aux.a;
  26. }
  27. }

Saludos!