Ir ao conteúdo
  • Cadastre-se

Ordenar em ordem crescente


Pstefani

Posts recomendados

Boa noite pessoal

Gostaria de uma ajuda para conseguir "manjar" esse algoritimo, acredito que eu esteja no caminho certo,segue abaixo, por favor, se possível mande apenas uma pista, não me mandem pronto, OK?

Desde já agradeço.

pedir para o usuário imprimir 3 numeros inteiros,e que eles saim em ordem crescente, usar apenas um if simples, nao usar else, não usar if´s aninhadas e nem comandos de atribuição.:confused:

#include <stdio.h>

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<numero3) && (!(numero1>numero2>numero3)&&(numero1<numero2>numero3)));
printf("segue lista de numeros em órdem crescente: %d %d %d",numero1,numero2,numero3); //* Duvida:

}

// Não estou conseguindo fazer com que os numeros fiquem em ordem crescente//

Link para o comentário
Compartilhar em outros sites

Separe suas comparações!

C é executado passo a passo!

você escreve num1>num2>num3 e o programa faz isso:

num1>num2 ? se não, retorne 0, se sim, retorne qualquer coisa diferente de 0

Dependendo do resultado acima, sobram essas possibilidades:

1- 0>num3 ?

2- qualquer_coisa_diferente_de_zero > num3 ?

As duas não lhe servem para nada!

Faça comparações aos pares!

algo do gênero:


if(num1>num2)
{
if(num1>num3)
{
num1 é maior
}
else if(num3>num1)
{
num3 é maior
}
else
{
num1 E num3 são os maiores e são iguais
}
}
else if(num2>num3)
{
if(num1==num2)
{
num1 E num2 são os maiores e são iguais
}
else
{
num2 é o maior
}
}
else if(num3>num1)
{
if(num2==num3)
{
num2 E num3 são os maiores e são iguais
}
else
{
num3 é o maior
}
}
else
{
todos os números são iguais
}

Não sei se coloquei todas as possibilidades, mas enfim é só um exemplo...

-

Link para o comentário
Compartilhar em outros sites

Como SharaMoustache disse, usando apenas UM if você não vai conseguir, pois se você tem 3 números e precisa imprimi-los em ordem crescente você poderia ter 3! = 6 ordens diferentes para imprimir esses números e assim com um if você não conseguiria achar o caso certo a imprimir (dado que a entrada é aleatória o melhor que você poderia fazer seria um programa que dividiria os números de casos possíveis pela metade).

De acordo com o que você escreveu, você só é proibido de usar if - else ou if aninhado (if dentro de if), assim acho que a solução mais prática seria testar se os seus números se encaixam em algum dos 6 casos possíveis, se acontecer você imprime a sequência e termina o programa, ok?

Link para o comentário
Compartilhar em outros sites

Quebrei a cabeça um pouco mas consegui. Veja como modifiquei seu código, porém o entendimento fica mais fácil se substituir as variáveis "numero1, numero2, numero3" por " x, y, z ".

Usando "if_else" é bem mais fácil, mas somente usando "if" fica bem mais difícil.

Então, pensei em usar uma variável auxiliar que recebesse um número e depois das comparações essa variável recebesse o menor, para que no final saísse em ordem crescente. É uma maneira diferente de visualizar esse exercício.

Depois de horas, o impossível(apenas usando "if") deu certo..

abraço....


#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);
}

Link para o comentário
Compartilhar em outros sites

Marcelo Miguel, sua solução não funciona para ele porque além de usar if simples ele também não pode usar comandos de atribuição, assim qualquer programa que inclua passar o valor de uma variável para outra é inválido, como eu disse a solução seria cascatear coisas do tipo:


if ((num1 <= num2) && (num2 <= num3))
{
printf ("%d %d %d\n", num1, num2, num3);
return 0;
}
if ((num2 <= num1) && (num1 <= num3))
{
printf ("%d %d %d\n", num2, num1, num3);
return 0;
}
/*...*/

Link para o comentário
Compartilhar em outros sites

ôpa,obrigado galera pelas respostas!

realmente todos estavam com a razão, O enunciado da questão não estava correto, Eu poderia usar apenas if, seja quantos fossem suficientes. Abaixo segue a minha solução:


#include <stdio.h>



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 && numero2 > numero3)
printf("A ordem dos numero e: %d %d %d",numero3,numero2,numero1);
if (numero1 > numero3 && numero3 > numero2)
printf("A ordem dos numero e: %d %d %d",numero3,numero1,numero2);
if (numero2 > numero1 && numero1 > numero3)
printf("A ordem dos numeros é: %d %d %d", numero3,numero2,numero1);
if (numero2 > numero3 && numero3 > numero1)
printf("A ordem dos numero e: %d %d %d", numero1,numero3,numero2);
if (numero3 > numero1 && numero1 > numero2)
printf("A ordem dos numeros e: %d %d %d",numero2,numero1,numero3);
if (numero3 > numero2 && numero2 > numero1)
printf("A lista de numeros crescente é:%d %d %d ",numero1,numero2,numero3);
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!