Ir para conteúdo

POWERED BY:

Arquivado

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

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

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]

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

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

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.

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.

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

×

Informação importante

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