Como imprimir em ordem crescente

10 respostas
M

Boa noite estava tentando imprimir em forma crescente mas não esta funfando…

import javax.swing.*;
class abc_crecente
{
    
 public static void main(String args[])
 {
  int a,b,c,scap;
  String mostre = "";

    a = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 1"));
    b = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 2"));
    c = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 3"));

if((a>=b)&&(b>=c)) {
    scap = a;
    a = b;
    b = scap;
    JOptionPane.showMessageDialog(null," ordem crescente dos numeros = "+a+" - "+b+" - "+c);  
 }
if((b>=a)&&(a>=c)) {
    scap = b;
    b = a;
    a = scap;
    JOptionPane.showMessageDialog(null," ordem crescente dos numeros = "+b+" - "+a+" - "+c);  
 }
if((c>=a)&&(b>=a)) {
    scap = c;
    c = a;
    a = scap;
    JOptionPane.showMessageDialog(null," ordem crescente dos numeros = "+c+" - "+b+" - "+a);  
 }
 }

}

obrigado pela ajuda…

10 Respostas

A

Não consegui entender muito bem sua lógica, a minha está mais ou menos assim:

se(a <= b) e (a <= c) entao
   se(b <= c) entao
       escreva(a,b,c)
   senao
       escreva(a,c,b)
   fimse
fimse

se(b <= a) e (b <= c) entao
   se(a <= b) entao
       escreva(b,a,c)
   senao
       escreva(b,c,a)
   fimse
fimse

se(c <= a) e (c <= b) entao
   se(a <= b) entao
       escreva(c,a,b)
   senao
       escreva(c,b,a)
   fimse
fimse

Testa aí.

M

estava pensando em utilizar uma variável para trocar os valores, com apenas duas eu consegui mas com tres comparações não consegui…
segue o codigo com duas comparações…

import javax.swing.*;
class abc_crecente
{
    
 public static void main(String args[])
 {
  int a,b,c,scap;
  String mostre = "";

    a = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 1"));
    b = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 2"));
    //c = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 3"));

if((a>=b)) {
    scap = a;
    a = b;
    b = scap;
    }
if((b>=a)) {
    scap = b;
    b = a;
    a = scap;
    }
if((a>=b)) {
    scap = a;
    a = b;
    b = scap;
    }
    JOptionPane.showMessageDialog(null," ordem crescente dos numeros = "+ a +" - "+ b);
 }

}

esse ficou certinho mas quando tento fazer com tres me enrrolo…

utiliza e tag cod para postar seu codigo, valeu.

A
import javax.swing.JOptionPane;
public class abc_crescente
{
    public static void main(String[] args){
       int a, b, c;
       
       a = Integer.parseInt(JOptionPane.showInputDialog("Informe o 1 número"));
       b = Integer.parseInt(JOptionPane.showInputDialog("Informe o 2 número"));
       c = Integer.parseInt(JOptionPane.showInputDialog("Informe o 3 número"));
       
       if((a <= b) &&(a <= c)){  
         if(b <= c){
            JOptionPane.showMessageDialog(null,"Ordem crescente"+a+" - "+b+" - "+c);
         } else{
            JOptionPane.showMessageDialog(null,"Ordem crescente"+a+" - "+c+" - "+b);
         }
       }else if((b <= a)&& (b <= c)){
          if(a <=c){
            JOptionPane.showMessageDialog(null,"Ordem crescente"+b+" - "+a+" - "+c);  
          }else{
            JOptionPane.showMessageDialog(null,"Ordem crescente"+b+" - "+c+" - "+a);  
          }
       }else if(a <=c){
            JOptionPane.showMessageDialog(null,"Ordem crescente"+c+" - "+a+" - "+b); 
       }else{
            JOptionPane.showMessageDialog(null,"Ordem crescente"+c+" - "+b+" - "+a); 
       }
    }
}

Não consegui com essa parada de trocar valores não, quando é com duas até que dá de boa aqui, mas quando é com três variáveis não consigo também. Dá uma olhada nesse que fiz e vê se você consegue ajustar a sua lógica aí. Eu não consegui!

B

Cara, adiciona esses valores em um array de inteiros e chame o método a seguir:

public static void bubbleSort(int[] vetor) {
		boolean houveTroca = true;
 
		while (houveTroca) {
			houveTroca = false;
			
			for (int i = 0; i < (vetor.length)-1; i++) {
				if (vetor[i] > vetor[i+1]) {
					int variavelAuxiliar = vetor[i+1];
					vetor[i+1] = vetor[i];
					vetor[i] = variavelAuxiliar;
					houveTroca = true;
				}
			}
		} 
	}
F

Concordo com o Bruno, o bom e velho Bublesort!

M

não consegui intender essa comparação.

F

Se você estiver iniciando na programação e ainda não viu laços de repetições e vetores essa explicação do Bruno pode ser um pouco avançada…

Eu acabei editando minha resposta pois enquanto eu escrevia muitas pessoas responderam em seguida (respostas até melhores) mas se realmente estiver iniciando, minha dica que eu havia escrito pode ajudar:

Problema de lógica!
Mas antes de ir ao problema, não é necessário essa variável scap e nem essa troca de valores entre as variáveis a, b e c.

Então levando em consideração que não existe mais esta variável scap e nem a troca de valores:
No primeiro if :arrow: se a > b e b > c então a sequência correta é c - b - a.
Segundo if :arrow: se b > a e a > c então a sequência correta é c - a - b.
Terceiro if :arrow: se c > a e b > a então não há sequência pois c e b são maiores que a mas você não sabe qual é maior b ou c.

Agora, se por algum motivo posterior você necessite desta varável scap (que pelo nome acredito que não) e mantenha seu código exatamente igual ao modo que está agora (confuso :smiley: ):
Primeiro if :arrow: sequência c - a - b
Segundo if :arrow: sequência c - b - a
Terceiro if tem que corrigir…

Mas aqui só te dei o “caminho das pedras” para você corrigir estas questões e verá que deverá realizar melhorias de lógica no seu código após estas primeiras correções. :wink:

L

Você também pode obter um resultado semelhante utilizando recursos da linguagem,

List<Integer> list = new ArrayList<Integer>();
        list.add( Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 1") ) );
        list.add( Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 2") ) );
        list.add( Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 3") ) );
        Collections.sort(list);
       JOptionPane.showMessageDialog(null," ordem crescente dos numeros = " + list );
M

Valeu galera, esse mes quase não programei já estava dominando vetores e laço mas ai veio as ferias da facu e dei uma parada, agora vou voltar a estudar…

C

+1

Criado 27 de janeiro de 2013
Ultima resposta 27 de jan. de 2013
Respostas 10
Participantes 6