Ir para o conteúdo
progster

Verificação Ordem

Mensagens Recomendadas

progster

Bom dia,

Estou de volta de um exercício em que pede uma sequência de valores ao utilizador, e que verifique se essa sequência está por ordem crescente, decrescente, ou se está desordenada.

Será que é possível fazer isto, sem um vetor?

Podem dar-me umas dicas sff?

Parece-me que para já ainda não é relevante, mas o que já tenho feito é:

package ordenação;
public class Ordenação {
   public static void main(String[] args)
   {
    int num,op,i,j,digito;	

    System.out.println("O que deseja verificar?");
    System.out.println("");
    System.out.println("1- Ordem Crescente!");
    System.out.println("2- Ordem Decrescente!");
    System.out.println("3- Desordenados!");
    System.out.println("");
    System.out.print("Introduza a opção pretendida: ");
    op=Le.umIt();

    if (op==1){
	   System.out.print("Introduza uma sequência de valores: "); //Aqui o meu raciocinio era verificar digito por digito, ou seja, se o último digito da sequência é maior, vai para a primeira posição, etc..., dai ter falado no vetor

	   num=Le.umIt();
				 while (num>0){
		   digito=num%10;
		   num=num/10;
		   System.out.println(digito);
	   }

	   System.out.println("A sequência está ordenada por ordem crescente!");
    }

    if (op==2){
	    //System.out.println("A sequência está ordenada por ordem decrescente!");
    }

    if (op==3){
	    //System.out.println("A sequência está desordenada!");
    }

    }
   }

Agradeço desde já qualquer ajuda que me possam dar.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Será que é possível fazer isto, sem um vetor?

sim, é.

Parece-me que para já ainda não é relevante, mas o que já tenho feito é:

pois ... não faz nada ...

Podem dar-me umas dicas sff?

tenta primeiro usar um vector e depois pensa em como não é necessário


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Viva,

Acho que os meus bits já estão a deitar fumo.

O seguinte código introduz valores no vetor, e lista o seu conteúdo, até aqui tudo bem.

package vetor;
public class Vetor {
   public static void main(String[] args)
   {
 int i,num=0,temp,contador=0; 

 System.out.print("Introduza o comprimento do vetor: "); 
 num=Le.umIt();
 System.out.println("");
 int[] ordena = new int [num];	   
 System.out.println("Comprimento: "+ordena.length);

 for(i=0;i<num;i++){		
	  System.out.print("Introduza um número na " + contador + "° posição: ");  
	    ordena[i] = Le.umIt();			
	    contador++;  
	    System.out.println("");
	    System.out.println("Posição "+i+" = "+ordena[i]);

	    //if(ordena[i]<ordena[i+1])
	    //System.out.println("Nova Posição = "+ordena[i]);					
   }
}
}

Agora para ordenar o vetor é que estou a ter problemas e penso que preciso de uma ajuda:

O raciocinio que estou a tentar seguir para todo o vetor é:

Se valor Posição 1< valor Posição2 Então
valor  1 = Posição 1
senão
valor 2 = Posição 1

Como aplico este raciocinio?


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vrael

1º - Pedes a sequência ao user e carregas tudo. Parece-me feito.

2º - Basta fazeres alguma maneira de comparar 3 números. Porque se forem só 2 ou vai ser crescente ou decrescente. Se forem 3 já consegues a parte do desordenada também...

Editado por vrael

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o teu objectivo não é ordenar, mas sim verificar se todos os elementos do array possuem a mesma ordem (crescente ou decrescente) em relação aos seus vizinhos


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

o teu objectivo não é ordenar, mas sim verificar se todos os elementos do array possuem a mesma ordem (crescente ou decrescente) em relação aos seus vizinhos

Certo, então mas para isso não é necessário ordenar?

1º - Pedes a sequência ao user e carregas tudo. Parece-me feito.

2º - Basta fazeres alguma maneira de comparar 3 números. Porque se forem só 2 ou vai ser crescente ou decrescente. Se forem 3 já consegues a parte do desordenada também...

1) Está feito, e a funcionar;

2) Podem ser n números;

Boas!

Tens aqui um link http://pt.wikipedia.org/wiki/Bubble_sort de um algoritmo de ordenação.

Obrigado, vou dar uma vista de olhos.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

Bem, fiz progressos:

package vetor;
public class Vetor {
   public static void main(String[] args)
   {
 int i,num=0,temp=0,contador=0; 

 System.out.print("Introduza o comprimento do vetor: "); 
 num=Le.umIt();
 System.out.println("");
 int[] ordena = new int [num];	   
 System.out.println("Comprimento: "+ordena.length);


   // aux = guarda o maior valor de cada comparação
	    int aux = 0;
 for(i=0;i<num;i++){		 
    System.out.print("Introduza um número na " + contador + "° posição: ");  
    ordena[i] = Le.umIt();			
    contador++;  
    System.out.println("");
    System.out.println("Posição "+i+" = "+ordena[i]);
    System.out.println("");
    System.out.println("Desordenada: "+ordena[i]);
 }
	    for (i = 0; i < ordena.length; i++)
	    {
		    for (int j = 0; j < ordena.length; j++)
		    {
			    if (ordena[i] < ordena[j])
			    {					  
//Troca. O maior para a direita e o menor para a esquerda					   
				    aux = ordena[i];
				    ordena[i] = ordena[j];
				    ordena[j] = aux;
			    }
		    }
	    }
//esse for é simplesmente para testar a ordenação
	    for (int k = 0; k < ordena.length; k++)
	    {
		    System.out.println("Ordem crescente: "+ordena[k]);			 
	    } 


			   for (i = 0; i < ordena.length; i++)
	    {
		    for (int j = 0; j < ordena.length; j++)
		    {
			    if (ordena[j] < ordena[i])
			    {					  
//Troca. O maior para a direita e o menor para a esquerda					   
				    aux = ordena[j];
				    ordena[j] = ordena[i];
				    ordena[i] = aux;
			    }
		    }
	    }
//esse for é simplesmente para testar a ordenação
	    for (int k = 0; k < ordena.length; k++)
	    {
		    System.out.println("Ordem Decrescente: "+ordena[k]);			 
	    }				 
   }  
}

Finalmente, já está a mostrar a sequência introduzida por ordem crescente, decrescente e desordenada.

Ainda estou a tentar perceber o código em si, mas e a titulo de curiosidade gostaria de saber sff, como por o programa a verificar se a sequência está por ordem crescente, decrescente ou se está desordenada.


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

já te disse ... o que fizeste não serve para nada :

Estou de volta de um exercício em que pede uma sequência de valores ao utilizador, e que verifique se essa sequência está por ordem crescente, decrescente, ou se está desordenada.

saber se está ordenado não é ordenar !!!

volto a dizer : o que fizeste não interessa absolutamente nada para a resolução do exercício !!!!

o que tens de verificar é se os números estão ordenados e não ordenar-los !!


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster

volto a dizer : o que fizeste não interessa absolutamente nada para a resolução do exercício !!!!

o que tens de verificar é se os números estão ordenados e não ordenar-los !!

Sim, sem dúvida que para a resolução do exercício em si não interessa, mas tenho estado a tentar lá chegar e apresentei trabalho.

Só que ainda não percebi, como é que posso fazer isso. Podes orientar-me sff?


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

traduz isto para código:

se existirem 2 ou menos elementos no array, o array encontrasse ordenado, caso contrário, o array só se encontra ordenado se para cada elemento que não o primeiro e o segundo, a relação de ordem entre si e o anterior for igual ao anterior e o anterior do anterior.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster
if(ordena.length<=2)
{
System.out.print("Vetor ordenado");
}
if(ordena[0] && ordena[1] = ordena[i]) //Ainda estou a trabalhar nesta, sei que não é o que escreveste, mas será que é algo do género?
{
System.out.print("Vetor desordenado");
}


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

se existirem 2 ou menos elementos no array, o array encontrasse ordenado, caso contrário, o array só se encontra ordenado se para cada elemento que não o primeiro e o segundo, a relação de ordem entre si e o anterior for igual ao anterior e o anterior do anterior.


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
progster
a=ordena[0];
b=ordena[1]
if(ordena.length<=2)
{
System.out.print("Vetor ordenado");
}
if(ordena[i] != (a && b) //Será que é algo do género?
{
System.out.print("Vetor desordenado");
}


Não resolvo dúvidas por PM.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.