Jump to content
pedro_15

Vencimentos com ordenação BubbleSort

Recommended Posts

pedro_15

Pretende-se pedir ao utilizador o vencimento de 50 funcionarios de uma empresa de informatica.

Guarde os valores num array com o nome vencimento (nao se esqueça que os vencimentos sao do tipo real).

utilizando o algoritmo de ordenação bubblesort, ordene o array por ordem crescente.

Resolução:

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {
    int i = 0, j = 0, quant = 50;
    String[] num1;
    String aux;

            System.out.print("Vencimento dos funcionarios: ");
            quant = new Scanner(System.in).nextInt();

            num1 = new String [quant];

            for (i = 0; i <= quant - 50; i++){
                System.out.print("Entre com o nome da "+ (i + 1) +"ª pessoa: ");
                num1[i] = new Scanner(System.in).next();
            }

            for (i = 0; i <= quant - 2; i++){
                for (j = i + 1; j <= quant - 1; j++){
                    if( num1[j].compareTo(num1[i]) < 0){
                        aux = num1[j];
                        num1[j] = num1[i];
                        num1[i] = aux;
                    }
                }
            }

            System.out.println("A ordem correta é: ");

            for (i = 0; i <= quant - 1; i++){
                System.out.print(num1 [i]);
                if (i < quant - 1)
                    System.out.print(", ");
                else
                    System.out.print(".");
            }

    }

}

Alguem me podera ajudar , e dizer onde estão os erros neste codigo?

Obrigado

Share this post


Link to post
Share on other sites
brunoais

O que é que ele faz que não devia?

O que é que ele não faz que devia fazer?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
pedro_15

O que é que ele faz que não devia?

O que é que ele não faz que devia fazer?

Esquecime peço desculpa.

Eele não ordena por ordem crescente como é pedido.

Share this post


Link to post
Share on other sites
Colector Boy

O que tu tens nao faz sentido.

1º Tu queres o tamanho do vector e pedes o vencimento?

System.out.print("Vencimento dos funcionarios: "); 
quant = new Scanner(System.in).nextInt(); 

2º Tu queres guardar o vencimento porque estás a guardar o nome da pessoa?

3º Penso que seria melhor utilizares o .nextLine()

4º Se queres guardar o vencimento de N trabalhadores utiliza um vector de doubles e nao um vector de strings.

5º Se queres gravar o nome dos funcionários utiliza outro vector (vector de strings) para guardar os respectivos nomes.


for (i = 0; i <= quant - 50; i++){
                System.out.print("Entre com o nome da "+ (i + 1) +"ª pessoa: ");
                num1[i] = new Scanner(System.in).next();
            }

Fiz umas alterações ao teu código:

package Principal;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {
    int i = 0, j = 0, quant = 50;
    String[] nome_func;
    double[] venc_func;

    String saux="";
    double daux=0;
    

            //ler tamanho vector
            System.out.print("Quantos funcionarios tem?: ");
            quant = new Scanner(System.in).nextInt();
            
            nome_func = new String [quant];
            venc_func=new double[quant];
            
            //ler dados funcionarios
            for (i = 0; i < quant; i++)
            {
                System.out.print("Nome da pessoa: ");
                nome_func[i] = new Scanner(System.in).nextLine();
                System.out.print("Vencimento do funcionario: ");
                venc_func[i]= new Scanner(System.in).nextDouble();
            }


          //ordenar crescente
         for (i = 0; i <quant-1; i++)
         {
                for (j=i+1; j<quant; j++)
                {

                    if( venc_func[i]>venc_func[j])
                    {
                        //guardar dados da posicao j
                        saux=nome_func[j];
                        daux = venc_func[j];

                        //colocar dados da posicao i em j
                        nome_func[j] = nome_func[i];
                        venc_func[j] = venc_func[i];

                        //colocar dados da posicao j em i
                        nome_func[i] = saux;
                        venc_func[i] = daux;

                        
                    }
                   
                }
                 
            }
            
            //imprimir vectores
            System.out.println("A ordem correta é: ");

            for (i = 0; i < quant; i++)
            {
                System.out.print("Nome: "+nome_func [i]+",Vencimento: "+venc_func[i]+" \n");
               
            }

    }

}

Share this post


Link to post
Share on other sites
thoga31

Colector Boy  obrigadão

:)

Então mas apagaste o teu primeiro post por que carga de água? Assim o tópico perde toda a lógica! 😲


Knowledge is free!

Share this post


Link to post
Share on other sites
Colector Boy

pedro_15: De nada.  :)

O thoga31 tem razão devias ter deixado ficar a tua duvida.

E agradecias com um novo post.(como fizeste)

Share this post


Link to post
Share on other sites
anolsi

@pedro_15 Eles têm razão, depois de conseguires resolver uma dúvida não a deves apagar. Porque isto pode ajudar outras pessoas com dúvidas semelhantes. Deves marcar simplesmente o tópico como resolvido.

Btw, o texto do primeiro post foi recuperado.


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.