Ir para conteúdo
RinaldFN

[Resolvido] Colocando 3 numeros em ordem crescente

Recommended Posts

Olá,Estou tentando fazer o seguinte algoritimo:Pegar 3 valores, e depois colocalos em ordem crescente, mas não é tão fácil como paarece.Pelo que percebi, existe 27 possibilidades. Será que terei que fazer 27 if para analizar os valores?Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim?deixa ver se entendi você tem 3 valores. ex:583e quer deixálos em ordem crescente assim?358é isso?se for é extremamente simples...insira estes itens em um array e depois de um "sort" para ordená-los...qual linguagem está usando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

Pelo q entendi do seu problema, vou te aprensentar a seguinte solução.

você terá q criar um vetor ou array como a maioria conhece, vou fazer em portugol, depois você analize e

passe para a linguagem q está utilizando.

variáveisind, num, aux, aux2: inteiro;vetor: inteiro;aux:=100000;ind:=1;para (ind até 3) façaimprima (Digite um numero);leia(num);vetor[ind]=num;se (num<aux) entãoaux:= num;fimse;fimpara;//(nesta parte foi preenchido o vetor e já sabemos// qual é o menor elemeno agora vamos ordena-lo)ind=1;para (ind até 3) façase vetor[ind]>aux entãoaux2:= vetor[ind];vetor[ind]=aux;aux=aux2;fimse;fimpara;
Aí kr acho q deve ficar +/- assim, a idéia é essa, o algoritmo deve

também ficar mais ou menos assim

Editado por quitZAUMMM
Inclusão da tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para véio, é muito mais simples fazer algo assim.... supomos que seja em php... porem qualquer outra linguagem tem comando para ordenar array em ordem crescente$valor = array("b","c","a");sort($valor);pronto... $valor[0] = "a";$valor[1] = "b";$valor[2] = "c";

Nuoossa, vcs tão viajando meu... eu vi esse post faz uma cara e achei meio idiota responder pq era facil d+ mas dp dessas respostas... n precisa fazer nada disso cara, nd de vetor... basta fazer isso:leia(a,b,c);se(a<B) então { aux=a; a=b; b=aux }se(b<c) então { aux=b; b=c; c=aux }se(a<B) então { aux=a; a=b; b=aux }e acabou... depois disso a>b>c ...simples, você so checou se b tinha um valor maior do q a, se tinha trocou eles de lugar... faz o mesmo com b e c, e volta a fazer com a e b pq na segunda operação você pode ter trocado o valor de b...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao intendi, algum poderia mi dizer como fazer isso no borland?

Olá, meu nome é Simon Viegas. Faço Sistemas de Informações no Centro Universitário da Bahia-FIB em Salvador-BA.

 

Vamos lá, no Pascal 7.0 seria assim.

 

 

É so traduzir para a linguagem correspondente !!!

 

leia(a,b,c);se(a>b) então { aux=a; a=b; b=aux }se(b>c) então { aux=b; b=c; c=aux }se(a>b) então { aux=a; a=b; b=aux }
eu troquei o sinal de "<" por ">" pois estava invertida. Antes iria resultar em ordem decrescente !!!

program OrdemCrescente;var..a,b,c, aux :real; {variaveis do programa}begin..{ler os valores}..writeln('Digite o valor de "a", "b" e "c");..readln(a,b,c)..{ordenar valores (crescente de valor)}......{em portugol ==> se(a>b) então { aux=a; a=b; b=aux }}..if a>b then..begin....aux:=a; a=b; b=aux;..end;......{em portugol ==> se(b>c) então { aux=b; b=c; c=aux }}..if b>c then....begin......aux:=b; b=c; c=aux;..end;..{ordenar valores (crescente de valor)}......{em portugol ==> se(a>b) então { aux=a; a=b; b=aux }}..if a>b then....begin......aux:=a; a=b; b=aux;....end;..{exibir valores}..writeln;..writeln(' Valore em ordem: ',a,', ',b,', ',c);..readln; {para dar um "pause" antes de encerrar}end.
e se preferir pode usar procedures

program OrdemCrescenteProcedure;procedure Trocar(var x,y:real);..var aux:real..begin  aux:=x; x:=y; y:=aux;  end;var..a,b,c, aux :real; {variaveis do programa}begin..{ler os valores}..writeln('Digite o valor de "a", "b" e "c");..readln(a,b,c)..{ordenar valores (crescente de valor)}..if a>b then Trocar(a,b);..if b>c then Trocar(b,c);..if a>b then Trocar(a,b);..{exibir valores}..writeln;..writeln(' Valore em ordem: ',a,', ',b,', ',c);..readln; {para dar um "pause" antes de encerrar}end.
EU UTILIZEI "." NO INICIO DAS LINHAS SÓ PARA PODER "ENDENTAR" !!!! (Basta trocar os "." por "espacos")

 

Infelizmente não posso ficar verificando todo dia se houve outro post após o meu.

Gostaria que se alguem quizar fazer um comentario, que me enviasse por email tambem para me avisar e eu pode participar !!!

 

 

simonpiata@yahoo.com.br

 

end.

 

 

 

 

 

[/b]

Editado por quitZAUMMM
Inclusão da tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores...Pelo método do Array é muito mais simples...pois temos que imaginar se fosse ordenar + de 1000 numeros... não dariam por alguns metodos...Utilize a forma de array !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que terá que fazer o lance dos IFs mesmo...

 

Exemplo... 3 7 e 8...

 

Vai inserir as variáveis né...A, B e C...

 

Daí faz conforme falaram mais ou menos assim...

 

If A>B && A>C, logo o A é o maior hehe, deixa ele pro final...daí você tem que caçar entre o B e o C...

 

If A>B && A<C, logo o A é o segundo maior, C é o maior e o B é o ultimo...

 

Tem que usar uma lógica semelhante a essa se quiser utilizar os Ifs da vida...

 

 

Bom...foi o que eu entendi hehe... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse aqui é bom:

     se a>b OU a>c então        se b < c então          //troca b com a        senão          //troca c com a        fimse     fimse     se c < b então        //troca c com b     fimse
Explicação:

Se o a for maior que b ou c, então é porque ele não é o menor.

Se ele não é o menor, é porque o menor só pode ser o b ou o c. Por isso o teste "b < c". Uma vez achado o menor entre b e c, guarda-se esse valor em a, que é onde deve estar o menor.

Depois, para que se tenha o intemediário em b e o maior em c, verifica-se quem é o menor entre b e c, como vemos no final do código.

 

Os comentários "//troca" devem ser trocados pelo algoritmo de troca, que usa uma variável auxiliar (acho que todos conhecem):

aux <- var1

var1 <- var2

var2 <- aux

Editado por quitZAUMMM
Inclusão da tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ordenar elementos pode usar-se uma técnica padronizada chamada "buble sort" ou seja: o método da bolha, onde os números maiores "sobem" para o final do vetor da mesma forma que bolhas sobem na água...

 

exemplo:

program bubble;{ordena o vetor utilizando o método da bolha}varvetor : array [1..5] of integer;i, j, aux : integer;begin{leitura dos valores}for i := 1 to 5 dobeginwrite ('Informe os valores que compoem o vetor: ');readln (vetor[i]);end;{Ordenação pelo metodo da bolha}for i := 1 to 5 dofor j := i + 1 to 5 doif (vetor[i] > vetor[j]) thenbeginaux := vetor[i];vetor[i] := vetor[j];vetor[j] := aux;end;{Impressao dos valores ordenados}writeln ('os valores ordenados: ');for i := 1 to 5 dowrite (vetor[i]);readln;

Compartilhar este post


Link para o post
Compartilhar em outros sites

:D Ai galera pra ajudar e simplificar...

se você estiver usando o C++ como linguagem o codigo e simples e vale pra quantas variaves for necessario.

 

 

// sorting/stl-sort-array.cpp - Demo STL sort of array.

#include <iostream>#include <algorithm>using namespace std; int main() {    int a[7] = {23, 1, 33, -20, 6, 6, 9};        sort(a, a+7);        for (int i=0; i<7; i++) {        cout << a[i] << " ";    }        return 0;}
Vamos a explicacao:

você precisa utilisar a funcao sort() prevista na classe <algorithm> (que é do stl). Na funçao sort() você deve passar 2 argumentos como mostrados acima. Na demostraçao acima, 'a' contem o endereço do primeiro container array, ou seja, endereco onde estava estocado o valor 23 como mostra o exemplo. O segundo argumento passado por sort() é a incrementaçao 7x o endereço do primeiro container pois a funçao sort() precisa saber em qual endereço da memoria começa e termina a array e para isso passamos o endereço do primeiro container e o endereço do container apos o ultimo, é por isso que acima você encontra +7 e nao +6.

Atençao nao é o ultimo e sim o endereço apos o ultimo container.

Espero q fico claro...

Editado por quitZAUMMM
Inclusão da tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

boas sou novo aqui

acho que para este topico,nao sei se ainda interessa,mas para tres numeros o mais facil deve ser assim:

#include<iostream.h>void decresc(int a,int b,int c);void main(){	int n1,n2,n3;cout<<"introduza 3 inteiro para colocar por ordem crescente"<<endl;cin>>n1>>n2>>n3;decresc(n1,n2,n3);void decresc(int a,int b,int c){	int aux;	if(a> b ){	aux=a; a=b; b=aux;	}	if(b>c){		aux=b; b=c; c=aux;	}	if(a> b ){		aux=a;a=b; b=aux;	}cout<<a<<b<<c<<endl;}

abraço.

Editado por quitZAUMMM
Inclusão da tag [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal beleza?? Vi que o tópico rendeu bastante.Quando eu o inicie, o intúito não era usar funções prontas para ordenar, e sim fazer no braço.A idéia também não é usar métodos de ordenação, pois como se trata de 3 números não é necessário.O idéia é criar da forma mais otimizada possível usando esteuturas de seleção.Obrigado por todas as respostas! Percebi que varios conseguiram fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos. Segue o código em C para resolver este problema:

 

//Programa para inserção e ordenação de 3 números

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
int A, B, C, menor, medio, maior;
printf ("Entre com os valores de A, B e C\n");
scanf ("%i\n %i\n %i", &A, &B, &C);
if ((A != B ) && (A != C) && (B != C))
	{
		if ((A<= B ) && (A<= C) && (B<= C))
		{
		menor = A;
		maior = C;
		medio = B;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
		if ((A<= B ) && (A<= C) && (C<= B ))
		{
		menor = A;
		maior = B;
		medio = C;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
		if ((B<= A) && (B<= C) && (A<= C))
		{
		menor = B;
		maior = C;
		medio = A;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
		if ((B<= A) && (B<= C) && (C<= A))
		{
		menor = B;
		maior = A;
		medio = C;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
		if ((C<= A) && (C<= B ) && (B<= A))
		{
		menor = C;
		maior = A;
		medio = B;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
		if ((C<= A) && (C<= B ) && (A<= B ))
		{
		menor = C;
		maior = B;
		medio = A;
		printf ("%i e o menor valor.\n", menor);
		printf ("%i e o maior valor.\n", maior);
		printf ("%i e o medio valor.\n", medio);
		}
	}
else
	{
	printf ("Os valores devem ser diferentes um do outro.\n");
	}
printf ("Os valores em ordem crescente sao: %i | %i | %i.\n", menor, medio, maior);
system ("PAUSE");
return (0);
}

É isso colegas.

Editado por quitZAUMMM
Troca das tags <div> pelas tags [code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo verifique este algoritmo aqui

 

algoritmo "ordenar numeros"
// Função : Ordenar 3 numeros em ordem crescente
// Autor :  Gustavo Rodrigues Torre
// Data : 23/8/2007
// Seção de Declarações
var
A, B, C : inteiro
inicio
// Seção de Comandos
escreval("Digite um número: ")
leia(A)
escreval("Digite um numero: ")
leia(B)
escreval("Digite um número: ")
leia(C)

	   se (A>B) e (B>C) entao
	   escreval("Essa é a ordem crescente dos números citados: ", C, B, A)
	   senao
		 se (B>A) e (A>C) entao
		 escreval("Essa é a ordem crescente dos números citados: ", C, A, B)
	   senao
		   se (C>A) e (A>B) entao
		   escreval("Essa é a ordem crescente dos números citados: ", B, A, C)
		   senao
			 se (B>C) e (C>A) entao
			 escreval("Essa é a ordem crescente dos números citados: ", A, C, B)
			 senao
				se (A>C) e (C>B) entao
				escreval("Essa é a ordem crescente dos números citados: ", B, C, A)
				senao
					se (C>B) e (B>A) entao
					escreval("Essa é a ordem crescente dos números citados: ", A, B, C)
	   fimse
		 fimse
		   fimse
			 fimse
			   fimse
					fimse
fimalgoritmo

Volte a postar se encontrar algum erro

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Codigo em C, bem mais simples usando a logica de Se a<b<c então tudo q for: a>b ,b>c e a>c (terá q ser trocado).

 

vamos ao codigo:

 

#include <stdio.h>
void main (void)
{
	int a,b,c;
	int aux;

	printf("entre com tres numeros:");
	scanf("%d%d%d",&a,&b,&c);

	if(a>b)
	{
		aux=a;
		a=b;
		b=aux;
	}
	if(a>c)
	{
		aux=a;
		a=c;
		c=aux;
	}
	if(b>c)
	{
		aux=b;
		b=c;
		c=aux;
	}

	printf("%d%d%d", a,b,c);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta ai

 

if (a<b E a<c E b<c){
}
else if(a<b E a<c E c<b){
	aux=b;
	b=c;
	c=aux;
}
else if(b<a E b<c E a<c){
	aux=b;
	b=a;
	a=aux;
}
else if(b<a E $b<c E c<a){
	aux=a;
	a=b;
	b=c;
	c=aux;
}

else if(b<a E b<c E c$a){
	$aux=$a;
	a=c;
	c=aux;	
}
else if(c<a E $c<b E a<b){
	aux=a;
	a=c;
	c=b;
	b=aux;
}
else if(c<b E c<a E b<a){
	aux=a;
	a=c;
	c=aux;
}
Escreva A, B, C

 

Olá,

 

 

Estou tentando fazer o seguinte algoritimo:

 

Pegar 3 valores, e depois colocalos em ordem crescente, mas não é tão fácil como paarece.

 

Pelo que percebi, existe 27 possibilidades. Será que terei que fazer 27 if para analizar os valores?

 

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.