Duvida em desenvolvimento de algoritmo de seleção

  1. Construa um algoritmo que seja capaz de dar a classificação olímpica de 3 países informados. Para cada país é informado o nome, a quantidade de medalhas de ouro, prata e bronze. Considere que cada medalha de ouro tem peso 3, cada prata tem peso 2 e cada bronze, peso 1.

agora fica minha duvida!
eu poderia fazer uma variável que conseguisse os pontos de cada medalhas certo? PM \ ponto medalhas, poderia usar uma media ponderada ae ficaria isso
PM = (ouro3+prata2+bronze*1)/3+2+1

mas e agora como eu fazeria para saber qual País seria o primeiro o segundo ou terceiro?

[code]public class Pais {

private String nome;
private int ouro;
private int prata;
private int bronze;
private int pontuacao;

public Pais(String nome) {
    super();
    this.nome = nome;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public int getOuro() {
    return ouro;
}

public void setOuro(int ouro) {
    this.ouro = ouro;
}

public int getPrata() {
    return prata;
}

public void setPrata(int prata) {
    this.prata = prata;
}

public int getBronze() {
    return bronze;
}

public void setBronze(int bronze) {
    this.bronze = bronze;
}

public int getPontuacao() {
    setPontuacao();
    return pontuacao;
}

private void setPontuacao() {
    this.pontuacao = ouro * 3 + prata * 2 + bronze;
}

}[/code]

[code]public class Classifica {

private Pais[] paises;

public Classifica(){

}

public Pais[] classificar(Pais[] paises){
    //aqui vc pode implementar qq algoritimo de ordenação q conheca
}

}[/code]

por eu não conhecer muito bem a linguagem, eu não entendi muito bem o que você fez ai.

e acho o que você escreveu aí, não tem muito haver com o que eu quero!

O que o markinlelo quis dizer é que o mais importante você já tem, que é o campo que indica quem é o maior e quem é o menor. Então, se você tiver um array de países pode utilizar o algoritmo que desejar(como o Bubble sort) para ordenar

é que não conheço muito de array mesmo, porque ainda estou no capitulo 3 do livro de Lógica de programação, sendo que array seria o próximo capitulo creio eu, que é onde aprende Estrutura de dados, como manipular elas, vetores, matrizes e registros, por isso acho que não tem sentido eles colocarem um exercício que se diz ser de seleção um pouco mais complexo para parte que estou.

sendo que ainda estou aprendendo apenas seleção!

[code]public class Classifica {

public Classifica() {
}

//implementado ordenação pelo bubbleSort
public Pais[] classificar(Pais paisesOrdenados[]) {

    for (int i = paisesOrdenados.length; i >= 1; i--) {
        for (int j = 1; j < i; j++) {
            if (paisesOrdenados[j - 1].getPontuacao() > paisesOrdenados[j].getPontuacao()) {
                Pais aux = paisesOrdenados[j];
                paisesOrdenados[j] = paisesOrdenados[j - 1];
                paisesOrdenados[j - 1] = aux;
            }
        }
    }
    return paisesOrdenados;
}

}[/code]

ta ai já com a implementação da ordenação, agora e so trabalhar na classe Main

cara tudo bem eu agradeço muito pelo que você fez, mas meu objetivo aqui é aprender, e como eu disse no exercício que eu to fazendo ele pede esse algoritmo em estrutura de seleção, o Bubble sort se não me engano tem estrutura de repetição né, não é esse meu objetivo

Voce pode tambem implementar um comparator para o vetor:


// Classifica em ordem Decrescente
public Pais[] classificar(Pais paisesOrdenados[]) {  
  Arrays.sort(paisesOrdenados, new Comparator<Pais> () {
      public int compare(Pais paisA, Integer paisB) {
          if(paisB.getPontuacao() > paisA.getPontuacao()  ) {
              return 1;
          } else {
             return -1;
          }
       }
   });

 return paisesOrdenados;
}

Jadir, vc precisa analisar todos os países e colocá-los em ordem.

Esse jeito que o Markinlelo postou é o mais simples pra fazer isso. Não tem como vc juntar vários países sem uma lista, array, arraylist, tree…

revivendo esse topico.

esses dias peguei pra volta a fazer esse algoritmo que eu tinha deixado para traz, acho que esta certo pelo que eu fiz agora!

Agradeço a quem tento aajudar, como sou inexperiente em programação ainda, fiz isso!

[code]public static void main(String[] args) {
// TODO code application logic here
String pais1, pais2, pais3;
double pontos1, pontos2, pontos3, o1, p1, b1, o2, p2, b2, o3, p3, b3;

    pais1 = JOptionPane.showInputDialog("Digite o nome do país:");
    pais2 = JOptionPane.showInputDialog("Digite o nome do país:");
    pais3 = JOptionPane.showInputDialog("Digite o nome do país:");
    o1 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de ouro o "+pais1+" recebeu:"));
    p1 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de prata o "+pais1+" recebeu:"));
    b1 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de bronze o "+pais1+" recebeu:"));
    o2 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de ouro o "+pais2+" recebeu:"));
    p2 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de prata o "+pais2+" recebeu:"));
    b2 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de bronze o "+pais2+" recebeu:"));
    o3 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de ouro o "+pais3+" recebeu:"));
    p3 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de prata o "+pais3+" recebeu:"));
    b3 = Double.parseDouble(JOptionPane.showInputDialog("Digita quantas medalhas de bronze o "+pais3+" recebeu:"));

    pontos1 = (o1 * 3 + p1 * 2 + b1 * 1)/(3 + 2 + 1);
    pontos2 = (o2 * 3 + p2 * 2 + b2 * 1)/(3 + 2 + 1);
    pontos3 = (o3 * 3 + p3 * 2 + b3 * 1)/(3 + 2 + 1);

    if ((pontos1 >= pontos2) && (pontos1 >= pontos3))
    {
        if (pontos2 >= pontos3)
            {
                JOptionPane.showMessageDialog(null, "O "+pais1+" ficou em primeiro lugar com média de pontos de "+pontos1+
                                              "\nO "+pais2+" ficou em segundo lugar com média de pontos de "+pontos2+
                                              "\nO "+pais3+" ficou em terceiro lugar com média de ponto de "+pontos3);
            }
        else
            {
                JOptionPane.showMessageDialog(null, "O "+pais1+" ficou em primeiro lugar com média de pontos de "+pontos1+
                                              "\nO "+pais3+" ficou em segundo lugar com média de pontos de "+pontos3+
                                              "\nO "+pais2+" ficou em terceiro lugar com média de ponto de "+pontos2);
            }
    }
    else if ((pontos2 >= pontos1) && (pontos2 >= pontos3))
    {
        if (pontos1 >= pontos3)
        {
                JOptionPane.showMessageDialog(null, "O "+pais2+" ficou em primeiro lugar com média de pontos de "+pontos2+
                                              "\nO "+pais1+" ficou em segundo lugar com média de pontos de "+pontos1+
                                              "\nO "+pais3+" ficou em terceiro lugar com média de ponto de "+pontos3);
            }
        else
            {
                JOptionPane.showMessageDialog(null, "O "+pais2+" ficou em primeiro lugar com média de pontos de "+pontos2+
                                              "\nO "+pais3+" ficou em segundo lugar com média de pontos de "+pontos3+
                                              "\nO "+pais1+" ficou em terceiro lugar com média de ponto de "+pontos1);
            }


    }
    else
    {
        if(pontos1 >= pontos2)
            {
                JOptionPane.showMessageDialog(null, "O "+pais3+" ficou em primeiro lugar com média de pontos de "+pontos3+
                                              "\nO "+pais1+" ficou em segundo lugar com média de pontos de "+pontos1+
                                              "\nO "+pais2+" ficou em terceiro lugar com média de ponto de "+pontos2);
            }
        else
            {
                JOptionPane.showMessageDialog(null, "O "+pais3+" ficou em primeiro lugar com média de pontos de "+pontos3+
                                              "\nO "+pais2+" ficou em segundo lugar com média de pontos de "+pontos2+
                                              "\nO "+pais1+" ficou em terceiro lugar com média de ponto de "+pontos1);
            }
    }
}   [/code]

se alguém achar que ta errado, da um toque pra mim da uma analisada melhor :smiley:

mas por enquanto é isso! mesmo acho que ta beleza