RinaldFN 0 Denunciar post Postado Março 14, 2006 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
Fernando Incerti 0 Denunciar post Postado Março 15, 2006 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
NickIII 0 Denunciar post Postado Março 15, 2006 (editado) 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 Maio 4, 2010 por quitZAUMMM Inclusão da tag [code] Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Incerti 0 Denunciar post Postado Março 16, 2006 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
Fernando Incerti 0 Denunciar post Postado Março 16, 2006 putz... é verdade concordo com você.... Compartilhar este post Link para o post Compartilhar em outros sites
ThiagoMaximus 0 Denunciar post Postado Março 22, 2006 nao intendi, algum poderia mi dizer como fazer isso no borland? Compartilhar este post Link para o post Compartilhar em outros sites
Simon Viegas 0 Denunciar post Postado Março 27, 2006 (editado) 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 Maio 4, 2010 por quitZAUMMM Inclusão da tag [code] Compartilhar este post Link para o post Compartilhar em outros sites
Maverick_JPA 0 Denunciar post Postado Março 27, 2006 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
Maverick_JPA 0 Denunciar post Postado Março 30, 2006 Sim tem razao... apenas 3 numeros..eu vi isso... porem estou supondo se fosse com mais algarismos !!Abs Compartilhar este post Link para o post Compartilhar em outros sites
Ðiogo 0 Denunciar post Postado Março 31, 2006 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
Cypher 0 Denunciar post Postado Abril 21, 2006 o melhor mesmo é por uma vector... veja aqui: http://programmers.iphorum.com/viewtopic.php?p=12#12 Cypher :) Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Urbieta 0 Denunciar post Postado Julho 3, 2006 (editado) 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 fimseExplicaçã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 Maio 4, 2010 por quitZAUMMM Inclusão da tag [code] Compartilhar este post Link para o post Compartilhar em outros sites
Lucky 0 Denunciar post Postado Julho 6, 2006 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
Wlyster 0 Denunciar post Postado Novembro 9, 2006 (editado) :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 Maio 4, 2010 por quitZAUMMM Inclusão da tag [code] Compartilhar este post Link para o post Compartilhar em outros sites
Briooosa 0 Denunciar post Postado Dezembro 12, 2006 (editado) 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 Maio 4, 2010 por quitZAUMMM Inclusão da tag [code] Compartilhar este post Link para o post Compartilhar em outros sites
RinaldFN 0 Denunciar post Postado Dezembro 25, 2006 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
nosbielcs 0 Denunciar post Postado Janeiro 22, 2008 (editado) 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 Maio 4, 2010 por quitZAUMMM Troca das tags <div> pelas tags [code] Compartilhar este post Link para o post Compartilhar em outros sites
Gustavo Rodrigues Torre 0 Denunciar post Postado Fevereiro 15, 2008 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
turvria 0 Denunciar post Postado Setembro 25, 2008 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
Raul Souza Silva 1 Denunciar post Postado Março 11, 2009 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