Ir ao conteúdo

Ordenar em ordem crescente


Pstefani

Posts recomendados

Postado

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

Postado

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

-

Postado

Obrigado! Valeu mesmo.

o problema que está pegando é que tenho que usar apenas um if, e nao posso usar else,ou comandos de atribuição etc...

Obrigado de qualquer forma..

Postado

Apesar de usar elses, nao usei comando de atribuição...

Imprimir 3 (TRÊS) números em ordem crescente usando UM if, nem na macumba sai!

Tem certeza que não é "usando SOMENTE ifs".

Porque com 1 só você não vai chegar a lugar algum...

-

Postado

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?

Postado

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

Postado

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;
}
/*...*/

Postado

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

Postado
Sua solução está errada, se o usuário digitar 2 ou 3 números iguais seu programa não imprime nada.

Verdade

Faltou colocar >= em todos os comandos.

Correto?

Obrigado a todos!!

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!