Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gustavo_eger

exercicio com vetor

Recommended Posts

Tenho que resolver o seguinte problema:

Dado um vetor contendo o nome de N alunos e outro contendo o nome de suas
respectivas cidades de origem, faça um programa que informe qual cidade tem o
maior número de alunos. Em seguida informe o nome dos alunos desta cidade.


O que eu ja fiz foi ler as posições do vetor, no caso os nomes dos alunos e suas respectivas cidades:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        int numero;
        System.out.println("Informe quantidade de elementos do vetor");
        numero = input.nextInt();
        
        String vetorAlunos[] = new String[numero];
        String vetorCidade[] = new String[numero];
        
        for(int i =0;i<=numero-1;i++){
            System.out.println("Informe o nome do Aluno");
            vetorAlunos[i] = input.next();
            
            System.out.println("Informe a cidade do Aluno");
            vetorCidade[i] = input.next();
        }
        
        
    }

O que falta é saber qual a cidade que tem o maior numero de alunos, e mostra o nome dos alunos desta cidade.

 

Se poderem me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz um código rápido aqui para retornar a cidade que contém mais alunos:

import java.util.ArrayList;

/**
 * @author RNXN
 */

public class Cidades {
    
    private String cidadeMaisAlunos = "";
    private String listaCidades[] = null;
    
    public Cidades(String listaCidades[]) {
        this.listaCidades = listaCidades;
        init();
    }
    
    public String getCidadeMaisAlunos(){
        return this.cidadeMaisAlunos;
    }
    
    private void init() {
        ArrayList<String> cidadesVerificadas = new ArrayList<>();
        int maior = 0;
        
        for( int i = 0; i < listaCidades.length; i++ ){
            String cidadeDaVez = listaCidades[i];
            
            if(!cidadesVerificadas.contains(cidadeDaVez)) {
                cidadesVerificadas.add(cidadeDaVez);
                
                int contador = 0;
                for(String cidade : listaCidades)
                    if(cidade.equals(cidadeDaVez))
                        contador++;
                
                if(i == 0) {
                    cidadeMaisAlunos = cidadeDaVez;
                    maior = contador;
                }
                else {
                    if(contador > maior) {
                        maior = contador;
                        cidadeMaisAlunos = cidadeDaVez;
                    }
                }
            }
        }
    }   
}

Teste:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int numero;
        System.out.println("Informe quantidade de elementos do vetor");
        numero = input.nextInt();

        String vetorAlunos[] = new String[numero];
        String vetorCidade[] = new String[numero];

        for (int i = 0; i <= numero - 1; i++) {
            System.out.println("Informe o nome do Aluno");
            vetorAlunos[i] = input.next();

            System.out.println("Informe a cidade do Aluno");
            vetorCidade[i] = input.next();
        }
        
        Cidades cidades = new Cidades(vetorCidade);
        System.out.println(cidades.getCidadeMaisAlunos());
    }
}

Mas há um porém: De nada adianta você saber qual cidade tem mais alunos. Os vetores são independentes um do outro, então o que você precisa fazer é criar um vetor com os índices de onde há ocorrências da cidade com mais alunos.

 

Com o código acima, você já tem a cidade com mais alunos. Tente implementar um método que retorne um vetor com o número dos índices. Depois, dentro do método main, percorra o vetor vetorAlunos e o vetor que foi retornado, se os índices forem iguais você mostra o nome do Aluno.

 

Qualquer dúvida, use este tópico. Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Necessário, não. Mas a classe fornece vários métodos que facilitam a implementação desse exercício.
Você pode fazer com vetores normalmente, mas o trabalho vai ser maior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso, eu estou aprendendo a materia de vetores mesmo, e nao entendi mesmo o seu código, teria como você me dar uma luz de como fazer com vetores?

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.