Ir para conteúdo
Fórum Script Brasil
  • 0

3 numeros crescentes Duvida


0cool

Pergunta

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....

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...