Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 4 Usuários ativos

    0 membro(s), 4 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

[Resolvido] Colocando 3 numeros em ordem crescente

  • Por favor, faça o login para responder
34 respostas neste tópico

#1 RinaldFN

RinaldFN
  • Membros
  • 503 posts

Postado 14 março 2006 - 11:06

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
  • 0

#2 Fernando Incerti

Fernando Incerti
  • Membros
  • 23 posts

Postado 15 março 2006 - 01:04

Como assim?

deixa ver se entendi você tem 3 valores. ex:

5
8
3

e quer deixálos em ordem crescente assim?

3
5
8

é isso?

se for é extremamente simples...

insira estes itens em um array e depois de um "sort" para ordená-los...

qual linguagem está usando?
  • 0

#3 NickIII

NickIII
  • Membros
  • 22 posts

Postado 15 março 2006 - 08:35

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áveis
ind, num, aux, aux2: inteiro;
vetor: inteiro;

aux:=100000;
ind:=1;
para (ind até 3) faça
imprima (Digite um numero);
leia(num);
vetor[ind]=num;
se (num<aux) então
aux:= 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ça
se vetor[ind]>aux então
aux2:= 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, 04 maio 2010 - 10:30 .
Inclusão da tag [code]

  • 0

#4 Fernando Incerti

Fernando Incerti
  • Membros
  • 23 posts

Postado 16 março 2006 - 01:37

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


  • 0

#5 Fernando Incerti

Fernando Incerti
  • Membros
  • 23 posts

Postado 16 março 2006 - 20:26

putz... é verdade concordo com você....
  • 0

#6 ThiagoMaximus

ThiagoMaximus
  • Membros
  • 3 posts

Postado 22 março 2006 - 20:05

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

#7 Simon Viegas

Simon Viegas
  • Membros
  • 1 posts

Postado 27 março 2006 - 13:45

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, 04 maio 2010 - 10:31 .
Inclusão da tag [code]

  • 0

#8 Maverick_JPA

Maverick_JPA
  • Membros
  • 201 posts

Postado 27 março 2006 - 17:03

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 !!!
  • 0

#9 Maverick_JPA

Maverick_JPA
  • Membros
  • 201 posts

Postado 30 março 2006 - 15:01

Sim tem razao... apenas 3 numeros..
eu vi isso... porem estou supondo se fosse com mais algarismos !!

Abs
  • 0

#10 Ðiogo

Ðiogo
  • Membros
  • 1.012 posts

Postado 31 março 2006 - 07:01

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

Abs!
  • 0

#11 Cypher

Cypher
  • Membros
  • 150 posts

Postado 21 abril 2006 - 11:54

o melhor mesmo é por uma vector...

veja aqui:

http://programmers.i...pic.php?p=12#12


Cypher :)
  • 0

#12 Bruno Urbieta

Bruno Urbieta

    Bruno Fernandes Urbieta

  • Membros
  • 3 posts

Postado 03 julho 2006 - 13:32

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, 04 maio 2010 - 10:32 .
Inclusão da tag [code]

  • 0

#13 Lucky

Lucky
  • Membros
  • 305 posts

Postado 06 julho 2006 - 03:05

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}
var
vetor : array [1..5] of integer;
i, j, aux : integer;
begin
{leitura dos valores}
for i := 1 to 5 do
begin
write ('Informe os valores que compoem o vetor: ');
readln (vetor[i]);
end;
{Ordenação pelo metodo da bolha}
for i := 1 to 5 do
for j := i + 1 to 5 do
if (vetor[i] > vetor[j]) then
begin
aux := vetor[i];
vetor[i] := vetor[j];
vetor[j] := aux;
end;
{Impressao dos valores ordenados}
writeln ('os valores ordenados: ');
for i := 1 to 5 do
write (vetor[i]);
readln;

  • 0

#14 Wlyster

Wlyster
  • Membros
  • 1 posts

Postado 08 novembro 2006 - 23:31

: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, 04 maio 2010 - 10:32 .
Inclusão da tag [code]

  • 0

#15 Briooosa

Briooosa
  • Membros
  • 2 posts

Postado 12 dezembro 2006 - 17:12

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, 04 maio 2010 - 10:32 .
Inclusão da tag [code]

  • 0

#16 RinaldFN

RinaldFN
  • Membros
  • 503 posts

Postado 25 dezembro 2006 - 16:02

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

#17 nosbielcs

nosbielcs
  • Membros
  • 350 posts

Postado 21 janeiro 2008 - 21:55

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, 04 maio 2010 - 10:34 .
Troca das tags <div> pelas tags [code]

  • 0

#18 Gustavo Rodrigues Torre

Gustavo Rodrigues Torre
  • Membros
  • 426 posts

Postado 15 fevereiro 2008 - 18:00

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
  • 0

#19 turvria

turvria
  • Membros
  • 1 posts

Postado 25 setembro 2008 - 14:21

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

}

  • 0

#20 Raul Souza Silva

Raul Souza Silva
  • Membros
  • 28 posts

Postado 11 março 2009 - 13:06

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


  • 0




Publicidade

/ins>