Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Alejandra Mirano en 19 de Septiembre 2020, 22:15
-
Hola, ya intenté cambiar los valores de los números ingresados por el usuario pero aún no me sale como piden el problema, si me pudieran decir en qué estoy mal o qué me falta se los agradecería mucho.
/*Realiza una función que reciba tres argumentos de tipo entero, a, b y c. La función
deberá ordenarlos de menor a mayor. Al finalizar la función, a deberá tener el valor
menor y c el valor mayor. Utilizar paso de argumentos por referencia. Realiza un
programa que utilice dicha función e imprima los valores de a, b y c antes y después de la llamada a la función */
Código:
#include<stdio.h>
void pro(int *a, int *b , int *c);
int aa, bb, cc, *apuntador1, *apuntador2, *apuntador3;;
main(){
apuntador1 =&aa;
apuntador2 =&bb;
apuntador3 =&cc;
printf("\nIntroduce el valor de a:");
scanf("%d",&aa);
printf("Introduce el valor de b:");
scanf("%d",&bb);
printf("Introduce el valor de c:");
scanf("%d",&cc);
printf("\na=%d, b=%d, c=%d",aa, bb, cc);
pro(&aa,&bb,&cc);
printf("\na=%d, b=%d, c=%d",*apuntador1,*apuntador2,*apuntador3);
}
void pro(int *a, int *b, int *c){//funcion que ordena los números ingresados por el usuario de mayor a menor
if(*a<*b && *b<*c){
}else if (*a<*c && *c<*b){
}else if (*b<*a && *a<*c){
}else if (*b<*c && *c<*a){
}else if (*c<*a&& *a<*b){
}else if (*c<*b&& *b<*a){
}
}
-
Estoy poco familiarizado con C y aún menos con esto de los punteros.
Así que la solución que doy no se si es la correcta, pero bueno, lo que es ordenar números sí que lo hace.
Además de completar la función, he cambiado el orden de las primeras líneas, porque si no producía un efecto extraño, el programa comienza a pedir datos sin antes mostrar los texto de los printf(), mostrándolos después de haber insertado los tres valores:
#include<stdio.h>
void pro(int *a, int *b , int *c);
int aa, bb, cc, *apuntador1, *apuntador2, *apuntador3;
int main(){
printf("\nIntroduce el valor de a:");
scanf("%d",&aa);
printf("Introduce el valor de b:");
scanf("%d",&bb);
printf("Introduce el valor de c:");
scanf("%d",&cc);
apuntador1 =&aa;
apuntador2 =&bb;
apuntador3 =&cc;
printf("\na=%d, b=%d, c=%d",aa, bb, cc);
pro(&aa,&bb,&cc);
printf("\na=%d, b=%d, c=%d",*apuntador1,*apuntador2,*apuntador3);
return 0;
}
void pro(int *a, int *b, int *c){//funcion que ordena los números ingresados por el usuario de mayor a menor
if(*a<*b && *b<*c){
//Nada que hacer, ya están en orden
}else if (*a<*c && *c<*b){
int temp = *c;
*c = *b;
*b = temp;
}else if (*b<*a && *a<*c){
int temp = *b;
*b = *a;
*a = temp;
}else if (*b<*c && *c<*a){
int temp = *a;
*a = *b;
*b = *c;
*c = temp;
}else if (*c<*a&& *a<*b){
int temp = *c;
*c = *b;
*b = *a;
*a = temp;
}else if (*c<*b&& *b<*a){
int temp = *c;
*c = *a;
*a = temp;
}
}
-
Muchas gracias!!, si me funciono, solo elimine la declaración de la variable temp por otra que ya tenia fija.