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

Título: Ejercicios resueltos en C lenguajeC punteros ordenar tres argumentos enteros num
Publicado 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.

Citar
/*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:

Código: [Seleccionar]
#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){

}
}
Título: Re:Lenjuage C, ejercicio utilizando punteros.
Publicado por: Kabuto en 20 de Septiembre 2020, 17:27
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:

Código: [Seleccionar]
#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;
}
}
Título: Re:Lenjuage C, ejercicio utilizando punteros.
Publicado por: Alejandra Mirano en 28 de Septiembre 2020, 04:36
Muchas gracias!!, si me funciono, solo elimine la declaración de la variable temp por otra que ya tenia fija.