Autor Tema: Ejercicios resueltos en C lenguajeC punteros ordenar tres argumentos enteros num  (Leído 5531 veces)

Alejandra Mirano

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
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){

}
}
« Última modificación: 29 de Octubre 2020, 14:25 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:Lenjuage C, ejercicio utilizando punteros.
« Respuesta #1 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;
}
}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Alejandra Mirano

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Lenjuage C, ejercicio utilizando punteros.
« Respuesta #2 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.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".