0cool Postado Agosto 26, 2018 Denunciar Share Postado Agosto 26, 2018 Faça um programa que leia 3 números inteiros e os imprima em ordem crescente. Eu havia feito o exercicio, porem estava procurando uma resolucao menor e sucinta. Pesquisei na internet e achei essa resolucao: #include<stdio.h> int main() { int numero1, numero2, numero3, troca; printf("Digite o primeiro numero inteiro: "); scanf("%d", &numero1); printf("Digite o segundo numero inteiro: "); scanf("%d",&numero2); printf("Digite o terceiro numero inteiro: "); scanf ("%d", &numero3); if( numero1 > numero2 ) { troca = numero2; numero2 = numero1; numero1 = troca; } if( numero2 > numero3 ) { troca = numero3; numero3 = numero2; numero2 = troca; } if( numero1 > numero2) { troca = numero2; numero2 = numero1; numero1 = troca; } printf("\n%d, %d, %d\n\n",numero1,numero2,numero3); system("Pause"); return(0); } Porém ainda não compreendi a logica dessas atribuicoes dentro dos "if's" se alguém puder me ajudar agradeço.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Setembro 15, 2018 Denunciar Share Postado Setembro 15, 2018 Olá. Segue um pequeno código onde tento explicar o que ocorre nos ifs do código acima: #include <stdio.h> int main() { int x = 40; int y = 20; if (x > y) { // se x é maior que y temp = x; // temp recebe o valor de x que é 40 x = y; // x recebe o valor de y que é 20, logo, x passa a valer 20 y = temp; // y recebe o antigo valor de x, que era 40, logo, y passa a valer 40 } printf("%d %d\n", x, y); return 0; } Vê se consegue entender a lógica agora, ok? Já se você quer um código mais otimizado ainda segue um exemplo onde uso uma função e trabalho com ponteiros e passagem por referência: #include <stdio.h> void troca(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } int main() { int numero1, numero2, numero3; printf("Digite o primeiro numero inteiro: "); scanf("%d", &numero1); printf("Digite o segundo numero inteiro: "); scanf("%d", &numero2); printf("Digite o terceiro numero inteiro: "); scanf ("%d", &numero3); if (numero1 > numero2) { troca(&numero1, &numero2); } if (numero1 > numero3) { troca(&numero1, &numero3); } if (numero2 > numero3) { troca(&numero2, &numero3); } printf("%d %d %d\n", numero1, numero2, numero3); return(0); } OBS: Só que não fique perdendo seu tempo procurando códigos prontos na internet É muito melhor você fazer um código do seu jeito, que funcione, não importando a quantidade de linhas de código usadas mas sabendo o que está fazendo do que pegar códigos prontos na internet e não entender nada do que está sendo feito Repito: Isso é uma completa perda de tempo e você não vai aprender a programar assim na base do copia/cola. Pode ter certeza disso! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
0cool
Faça um programa que leia 3 números inteiros e os imprima em ordem crescente.
Eu havia feito o exercicio, porem estava procurando uma resolucao menor e sucinta.
Pesquisei na internet e achei essa resolucao:
Porém ainda não compreendi a logica dessas atribuicoes dentro dos "if's" se alguém puder me ajudar agradeço....
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.