Ordem crescente e decrescente

28/08/2012

18

Faça um programa que receba obrigatoriamente 3 números obrigatoriamente em ordem crescente e um quarto número que não siga esta regra. Mostre, em seguida, os 4 números em ordem [b]decrescente[/b].
package Lista_P2;

import javax.swing.JOptionPane;

public class exercicio11 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		


				int numero1;
				int numero2;
				int numero3;
				int numero4;
				int auxiliar;

				numero1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o numero 1"));
				numero2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o numero 2"));
				numero3 = Integer.parseInt(JOptionPane.showInputDialog("Digite o numero 3"));
				numero4 = Integer.parseInt(JOptionPane.showInputDialog("Digite o numero 4"));

				if (numero1 > numero2) {
					auxiliar = numero1;
					numero1 = numero2;
					numero2 = auxiliar;
				}

				if (numero2 > numero3) {
					auxiliar = numero2;
					numero2 = numero3;
					numero3 = auxiliar;

				}
				
			
				if (numero1 > numero2) {
					auxiliar = numero1;
					numero1 = numero2;
					numero2 = auxiliar;
				}
				
				
				
				
				
				
				JOptionPane.showMessageDialog(null, "Ordem crescente: " + numero1 + " " + numero2 + " " + numero3);

				JOptionPane.showMessageDialog(null, "Ordem decescente: " +numero4 +" "+ numero3 + " " + numero2 + " " + numero1);

			}
		}

[b] [i]Como vocês podem ver meu código está correto até a parte do quarto número , não estou conseguindo alinhar ele para a ordem decrescente correta.[/i][/b]
Responder

Posts

28/08/2012

Davi Costa

Vc vai pegar seus números transformar em uma lista e implementa um bubble sorting decrescente:
public class bubbleSort {
	public static void main(String a[]) {
		int i;
		int array[] = { 12, 9, 4, 99, 120, 1, 3, 10 };
		System.out.println("Values Before the sort:\n");
		for (i = 0; i < array.length; i++)
			System.out.print(array[i] + "  ");
		System.out.println();
		bubble_srt(array, array.length);
		System.out.print("Values after the sort:\n");
		for (i = 0; i < array.length; i++)
			System.out.print(array[i] + "  ");
		System.out.println();
		System.out.println("PAUSE");
	}

	public static void bubble_srt(int a[], int n) {
		int i, j, t = 0;
		for (i = 0; i < n; i++) {
			for (j = 1; j < (n - i); j++) {
				if (a[j - 1] < a[j]) {
					t = a[j - 1];
					a[j - 1] = a[j];
					a[j] = t;
				}
			}
		}
	}
}
Veja também esse link: http://www.roseindia.net/java/beginners/arrayexamples/bubblesort.shtml abcs
Responder

28/08/2012

Ismael Silva

[quote="davi.costa"]Vc vai pegar seus números transformar em uma lista e implementa um bubble sorting decrescente:
public class bubbleSort {
	public static void main(String a[]) {
		int i;
		int array[] = { 12, 9, 4, 99, 120, 1, 3, 10 };
		System.out.println("Values Before the sort:\n");
		for (i = 0; i < array.length; i++)
			System.out.print(array[i] + "  ");
		System.out.println();
		bubble_srt(array, array.length);
		System.out.print("Values after the sort:\n");
		for (i = 0; i < array.length; i++)
			System.out.print(array[i] + "  ");
		System.out.println();
		System.out.println("PAUSE");
	}

	public static void bubble_srt(int a[], int n) {
		int i, j, t = 0;
		for (i = 0; i < n; i++) {
			for (j = 1; j < (n - i); j++) {
				if (a[j - 1] < a[j]) {
					t = a[j - 1];
					a[j - 1] = a[j];
					a[j] = t;
				}
			}
		}
	}
}
Veja também esse link: http://www.roseindia.net/java/beginners/arrayexamples/bubblesort.shtml abcs
VAleu :!: vou dar uma estudada agora nesse código , pq minha turma ainda não chegou a ver esse comando bubble sort.
Responder

28/08/2012

Davi Costa

Beleza companheiro, caso veja os fontes do link, observa que lá é crescente, mas os fontes que te passei já está decrescente. O que precisar só avisar. abcs
Responder

28/08/2012

Ismael Silva

Davi , aproveitando o tópico para não criar outro , você ou outro membro saberia me responder essa (sei que é fácil , mas esqueci como faz xz') : dividir um ano por 400 para saber se é bissexto ou não, para que não seja bissexto é necessário que ele seja divisível por 4 e não divisível por 100 ... e fazer um triângulo , é necessário pedir 3 seguimentos de reta(maior que zero) é necessário que cada segmento seja menor que a soma dos dois outros segmentos. Desculpa se pergunto de mais , é que não estou saindo do canto aqui e tenho que entregar essa listagem hoje , foram 19 questões , está faltando essas daí . Obg (:!:)
Responder

28/08/2012

Davi Costa

só para ajudar:
if(ano %4==0){
//...
}
abcs
Responder

19/03/2013

Davi Costa

Olá bom dia Davi, gostei muito de sua resposta, o código feito por vc é muito bem estruturado e de fácil entendimento, contudo gostaria que se possível vc fizesse este código usando a classe Scanner para receber os valores do array, ao invés de passar estes valores no código. Tenho que resolver um problema deste jeito e não tou conseguindo. Desde já muito obrigado.
Responder

19/03/2013

Marcelo Senaga

[quote="JBLiraJr"]Olá bom dia Davi, gostei muito de sua resposta, o código feito por vc é muito bem estruturado e de fácil entendimento, contudo gostaria que se possível vc fizesse este código usando a classe Scanner para receber os valores do array, ao invés de passar estes valores no código. Tenho que resolver um problema deste jeito e não tou conseguindo. Desde já muito obrigado.
É melhor você tentar por si próprio desenvolver o programa: http://javafree.uol.com.br/topic-859742-duvida-sobre-Scanner.html
Responder

24/04/2015

Bruno Silva

Codigo no java.... Está funcionando ;) Decrescente!! import javax.swing.JOptionPane; public class Exercicio_3 { public static void main ( String []args) { String numero1 = JOptionPane.showInputDialog("Digite o primeiro número"); String numero2 = JOptionPane.showInputDialog("Digite o segundo número"); String numero3 = JOptionPane.showInputDialog("Digite o terceiro número"); int n1 = Integer.parseInt(numero1); int n2 = Integer.parseInt(numero2); int n3 = Integer.parseInt(numero3); int aux; if(n1> n2 ){ aux=n1; n1=n2; n2=aux; } if(n2>n3){ aux=n2; n2=n3; n3=aux; } if(n1> n2){ aux=n1; n1=n2; n2=aux; } JOptionPane.showMessageDialog(null, n3 + "\n" + n2 + "\n" + n1); } }
Responder
Olá gostaria que alguem me explicasse a parte da comparação desse programa pois eu não entendi :( [quote="Brunrb96"]Codigo no java.... Está funcionando ;) Decrescente!! import javax.swing.JOptionPane; public class Exercicio_3 { public static void main ( String []args) { String numero1 = JOptionPane.showInputDialog("Digite o primeiro número"); String numero2 = JOptionPane.showInputDialog("Digite o segundo número"); String numero3 = JOptionPane.showInputDialog("Digite o terceiro número"); int n1 = Integer.parseInt(numero1); int n2 = Integer.parseInt(numero2); int n3 = Integer.parseInt(numero3); int aux; if(n1> n2 ){ aux=n1; n1=n2; n2=aux; } if(n2>n3){ aux=n2; n2=n3; n3=aux; } if(n1> n2){ aux=n1; n1=n2; n2=aux; } JOptionPane.showMessageDialog(null, n3 + "\n" + n2 + "\n" + n1); } }
Responder
if ( n1 > n2 ) { // se n1 for maior que n2
	aux = n1;    // aux recebe o valor de n1
	n1 = n2;     // n1 recebe o valor de n2
	n2 = aux;    // n2 recebe o valor de aux
}

if ( n2 > n3 ) { // se n1 for maior que n2
	aux = n2;    // aux recebe o valor de n2
	n2 = n3;     // n2 recebe o valor de n3
	n3 = aux;    // n3 recebe o valor de aux
}

if ( n1 > n2 ) { // se n1 for maior que n2
	aux = n1;    // aux recebe o valor de n1
	n1 = n2;     // n1 recebe o valor de n2
	n2 = aux;    // n2 recebe o valor de aux
}
Responder
Mas e se for por exemplo os números 3,1,2. Ele começa a a fazer as comparações só que vai chegar num momento que a ordem vai estar 1,2,3 e as comparações vão ser sempre falsas, isto é, o n1 não é maior que o n2 e nem o n2 maior que o n3. Como ele faz? compara o n3 com o n1??
Responder
Faz um teste de mesa que você vai entender "vai chegar num momento que a ordem vai estar 1,2,3 e as comparações vão ser sempre falsas" Perfeito, nesta situação, os numeros estarão ordenados como deveriam estar. "O n1 não é maior que o n2 e nem o n2 maior que o n3. Como ele faz? compara o n3 com o n1?" Se o n1 é menor que o n2 e o n2 é menor que o n3 então o n1 será menor que o n3, não havendo necessidade de comparar n3 com n1.
Responder
Sim, eu já fiz o teste de mesa. Exatamente por isso não sei o q ele faz quando esta 1,2,3 para ficar de ordem decrescente.
Responder
import javax.swing.JOptionPane ;

public class Exercicio_3 {

	public static void main( String[  ] args ) {
		int[  ] numeros = new int[  ] {
		        Integer.parseInt( JOptionPane.showInputDialog( "Digite o primeiro número" ) ),
		        Integer.parseInt( JOptionPane.showInputDialog( "Digite o segundo número" ) ),
		        Integer.parseInt( JOptionPane.showInputDialog( "Digite o terceiro número" ) ),
		} ;

		JOptionPane.showMessageDialog( null, "Digitados:\n" + numeros[ 0 ] + "\n" + numeros[ 1 ] + "\n" + numeros[ 2 ] ) ;
		
		ordenacaoCrescente( numeros ) ;
		JOptionPane.showMessageDialog( null, "Ordenação crescente:\n" + numeros[ 0 ] + "\n" + numeros[ 1 ] + "\n" + numeros[ 2 ] ) ;

		ordenacaoDecrescente( numeros ) ;
		JOptionPane.showMessageDialog( null, "Ordenação decrescente:\n" + numeros[ 0 ] + "\n" + numeros[ 1 ] + "\n" + numeros[ 2 ] ) ;
	}

	static void ordenacaoCrescente( int[  ] numeros ) {
		int quantidade = numeros.length ;
		int primeiro = 0 ;
		int segundo = 1 ;
		while ( segundo < quantidade ) {
			// na ordenação crescente troca os valores quando o primeiro é maior que o segundo
			if ( numeros[ primeiro ] > numeros[ segundo ] ) {
				int troca = numeros[ primeiro ] ;
				numeros[ primeiro ] = numeros[ segundo ] ;
				numeros[ segundo ] = troca ;
				primeiro = 0 ;
				segundo = 1 ;
			} else {
				primeiro++ ;
				segundo++ ;
			}
		}
	}

	static void ordenacaoDecrescente( int[  ] numeros ) {
		int quantidade = numeros.length ;
		int primeiro = 0 ;
		int segundo = 1 ;
		while ( segundo < quantidade ) {
			// na ordenação decrescente troca os valores quando o primeiro é menor que o segundo
			if ( numeros[ primeiro ] < numeros[ segundo ] ) {
				int troca = numeros[ primeiro ] ;
				numeros[ primeiro ] = numeros[ segundo ] ;
				numeros[ segundo ] = troca ;
				primeiro = 0 ;
				segundo = 1 ;
			} else {
				primeiro++ ;
				segundo++ ;
			}
		}
	}
}
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira