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
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int a, b, c, d;
}
t_cuatro;
void MODIFICAR(t_cuatro *pa,t_cuatro *pb,t_cuatro *pc,t_cuatro *pd);
int main()
{
t_cuatro datos;
printf ("Ingrese 4 numeros: "); scanf("%d%d%d%d",&datos.
a,&datos.
b,&datos.
c,&datos.
d); 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); MODIFICAR(&datos.a,&datos.b,&datos.c,&datos.d);
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);
return 0;
}
void MODIFICAR(t_cuatro *pa, t_cuatro *pb, t_cuatro *pc, t_cuatro *pd)
{
t_cuatro aux;
if(((*pb)< (*pc) ) && ((*pb)< (*pd)) && ((*pb) < (*pa)))
{
aux.a=(*pa);
*pa=*pb;
*pb=aux.a;
}
if((*pc)< (*pa) && (*pc)< (*pd) && (*pc) < (*pb))
{
aux.a=*pa;
*pa=*pc;
*pc=aux.a;
}
if((*pd)< (*pa) && (*pd)< (*pc) && (*pd) < (*pb))
{
aux.a=*pa;
*pa=*pd;
*pd=aux.a;
}
}
El tema es que en la funcion "MODIFICAR" me marca muchisimos errores y no se en que estoy fallando.
El apuntadador que estas pasando es un int no un t_cuatro
deberia de quedar asi
void MODIFICAR(int *pa, int *pb, int *pc, int *pd);
void MODIFICAR(int *pa, int *pb, int *pc, int *pd)
{
t_cuatro aux;
if(((*pb)< (*pc) ) && ((*pb)< (*pd)) && ((*pb) < (*pa)))
{
aux.a=(*pa);
*pa=*pb;
*pb=aux.a;
}
if((*pc)< (*pa) && (*pc)< (*pd) && (*pc) < (*pb))
{
aux.a=*pa;
*pa=*pc;
*pc=aux.a;
}
if((*pd)< (*pa) && (*pd)< (*pc) && (*pd) < (*pb))
{
aux.a=*pa;
*pa=*pd;
*pd=aux.a;
}
}
Saludos!