Olá a todos, estou iniciando os estudos sobre ponteiros por conta própria mesmo (QUE LOUCURA!!! HAHAH), não tenho achado nada fácil, e não sei se estou implementando os ponteiros de forma correta, mas, estou na caminhada rsrs'
Me deparei com um exercício a primeira vista, bem simples rsrs, mas quando fui fazer... Deu bastante trabalho. O exercício é o seguinte: Preciso receber 3 valores do usuário, e devo criar uma função, que recebe esses valores e ordene esses valores de forma DECRESCENTE. E isso deu muito trabalho... Então, gostaria de saber, se existe alguma forma mais simples de fazer essa ordenação. Sinto que transformei algo simples em uma dor de cabeça desnecessária kkkk
Fiz da seguinte forma: (OBS: Caso eu esteja fazendo uso errado dos ponteiros, ou de funções, por favor me corrijam, ainda estou iniciado em ponteiros, iniciei hoje)
#include <stdio.h>
void buffer_clean () {
int ch=fgetc(stdin);
while (ch != '\n' && ch != EOF);
}
void system_pause () {
printf ("\n\nPress any key to continue . . .");
scanf ("%*c");
}
int func_order(int *pa, int *pb, int *pc) {
int aux;
//CASO *PA SEJA O MAIOR DE TODOS
if (*pa > *pb && *pa > *pc) {
//não precisamos fazer nada, precisamos ordenar apenas o *pb e o *pc
if (*pc > *pb) { //Não precisamos fazer: if (*pb > *pc) -> Pois dessa forma já está ordenado
aux = *pb;
*pb = *pc;
*pc = aux;
}
}
//CASO *PB SEJA O MAIOR DE TODOS
else if (*pb > *pa && *pb > *pc) {
aux = *pa;
*pa = *pb;
*pb = aux;
//Sobrou pa e pc, vamos descobrir qual é o maior entre eles
if (*pc > *pb) {
aux = *pb;
*pb = *pc;
*pc = aux;
}
}
//CASO *PC SEJA O MAIOR DE TODOS
else if (*pc > *pa && *pc > *pb) {
aux = *pa;
*pa = *pc;
*pc = aux;
//Agora vamos ordenar o que restou (*pb e *pc)
if (*pc > *pb) {
aux = *pb;
*pb = *pc;
*pc = aux;
}
}
pa=&a; pb=&b; pc=&c;
retorno = func_order(pa,pb,pc);
printf ("A função retornou: %d\n", retorno);
printf ("Vamos testar se está ordenado!!!\n");
printf ("Valor de A: %d\nValor de B: %d\nValor de C: %d\n", *pa, *pb, *pc);
system_pause ();
return (0);
}
Não sei se o programa está 100% perfeito, porque em alguns teste acabava não ordenando (dependo de onde tava o maior, o 2º maior e etc), ai fui consertando aos poucos, até parar organizar em 100% dos testes que eu fiz, mas ainda não sei se está 100%, minha mente já esgotou rsrs
Enfim, existe alguma forma mais simples de fazer o mesmo que eu fiz?