AGRADECIMENTO...

Pessoal, Gostaria de pedir desculpas aqueles que deixam perguntas/comentários/elogios/críticas e ainda não foram respondidos.

Aproveito a oportunidade para informar a todos que devido a correria do dia a dia não conclui o curso de BSI, por isso meus conhecimentos são limitados rsrsrs...

Ainda não retirei o blog do ar porque tem ajudado a diversos estudantes, principalmente os iniciantes.

As vezes, quando o trabalho me permite, ainda arrisco tentar resolver algumas questões rs... mas para não deixar esse blog parar no tempo, o ESTUDANTE que quiser enviar a resolução de alguma questão (código próprio) para o meu e-mail, terei o prazer de posta-la neste blog e será mantido a autoria.

Desde já agradeço a todos pelas visitas e desejo bons estudos.

Thiago Campos
(srthiago@hotmail.com)

segunda-feira, 11 de junho de 2012

Uso de funções e vetores

1ª PARTE:
Faça um algoritmo que irá cadastrar o nome dos 20 alunos de uma turma, suas 2 notas e, automaticamente, sua média calculada da seguinte forma: (N1*4 + N2*6) /10. A média deve ser calculada pelo algoritmo logo quando o usuário digita as duas primeiras notas do aluno. Quando todos os alunos estiverem cadastrados, o algoritmo deve perguntar ao usuário se o mesmo deseja a lista dos alunos ordenada por ordem alfabética ou por ordem da menor para a maior média. O usuário informa qual opção deseja e o algoritmo irá ordenar a lista dos alunos (por nome ou média) e irá exibi-la ao usuário.

2ª PARTE:
Utilizando o algoritmo da questão anterior, após informar a lista dos alunos, permita que o usuário possa fazer a busca por um determinado nome de aluno e exiba suas notas caso o aluno esteja cadastrado na lista. Para isso o algoritmo deve perguntar qual o nome do aluno a ser buscado e irá iniciar uma busca na lista de nomes. Obs.: para esta busca podemos supor que a lista de nomes está organizada em ordem alfabética. Crie uma função chamada busca para realizar a busca pelo nome e faça uma chamada a esta função quando o usuário informar o nome desejado. Dentro da função diga se o nome pesquisado existe na listagem ou não.

(PS1.: Como estava sem saco de ficar cadastrando 20 alunos e suas respectivas notas, coloquei uma opção para o cadastramento automatico.)

//Autor: Thiago Campos
//Data: 11.06.2012

import java.util.Scanner;

/**
 *
 * @author Thiago
 */
public class Aluno {

    public static void main(String[] args) {
        //declaração de variaveis
        Scanner leia = new Scanner(System.in);
        String aluno[] = new String[20];
        String linha[] = new String[20];
        double n1[] = new double[20];
        double n2[] = new double[20];
        double media[] = new double[20];

        int j = 0;
        int op, sair = 0;
        int tipo;
        String busca;

        //menu do cadastro
        do {
            System.out.println("Escolha a opção de cadastramento;\n1-Cadastro Automatico"
                    + "\n2-Cadatro Manual");
            tipo = leia.nextInt();
        } while (tipo > 0 ^ tipo < 3);
        //Inicio do cadastramento automatico
        if (tipo == 1) { //condição para cadastramento automatico
           
            //nome do aluno
            aluno[0] = "Raniere Oliveira";
            aluno[1] = "Raul Cesar";
            aluno[2] = "PH Dantas";
            aluno[3] = "Roberto Queiroz";
            aluno[4] = "Leonardo Souto";
            aluno[5] = "Carla Souza";
            aluno[6] = "Rodrigo Garcia";
            aluno[7] = "Tiago Galas";
            aluno[8] = "Brunno Carvalho";
            aluno[9] = "Thiago Campos";
            aluno[10] = "Beto Barbosa";
            aluno[11] = "Caio Oliveira";
            aluno[12] = "Lee Hernandiz";
            aluno[13] = "Herivelton Paiva";
            aluno[14] = "Augustinho Paizinho";
            aluno[15] = "Hugo Leonardo";
            aluno[16] = "Edlyn Bruce";
            aluno[17] = "Tiago Alves";
            aluno[18] = "Srta Skimming";
            aluno[19] = "Rafael Teta";
           
            //primeira nota
            n1[0] = 6.5;
            n1[1] = 9.0;
            n1[2] = 7.9;
            n1[3] = 4.2;
            n1[4] = 7.8;
            n1[5] = 8.0;
            n1[6] = 5.5;
            n1[7] = 4.0;
            n1[8] = 7.4;
            n1[9] = 9.2;
            n1[10] = 5.8;
            n1[11] = 5.0;
            n1[12] = 6.8;
            n1[13] = 8.7;
            n1[14] = 5.9;
            n1[15] = 6.2;
            n1[16] = 7.3;
            n1[17] = 8.3;
            n1[18] = 1.5;
            n1[19] = 6.9;

            //segunda nota
            n2[0] = 3.9;
            n2[1] = 6.0;
            n2[2] = 4.9;
            n2[3] = 7.0;
            n2[4] = 6.5;
            n2[5] = 6.0;
            n2[6] = 4.9;
            n2[7] = 3.0;
            n2[8] = 6.9;
            n2[9] = 7.7;
            n2[10] = 6.7;
            n2[11] = 7.0;
            n2[12] = 6.9;
            n2[13] = 7.4;
            n2[14] = 4.3;
            n2[15] = 7.1;
            n2[16] = 5.5;
            n2[17] = 6.6;
            n2[18] = 2.9;
            n2[19] = 3.3;
           
            //media do aluno
            for (int i = 0; i < aluno.length; i++) {
                media[i] = ((n1[i]) * 4 + (n2[i]) * 6) / 10;
            }
        } //fim do if para cadastramento automatico
       
        else {
            //inicio da entrada dos dados manual
            for (int i = 0; i < aluno.length; i++) {
                System.out.print("O nome do aluno:");
                aluno[i] = leia.nextLine();
            }
            //cadatramento das notas dos alunos
            for (int i = 0; i < aluno.length; i++) {
                System.out.println("Digite as notas de(o) " + aluno[i]);
                n1[i] = leia.nextDouble();
                n2[i] = leia.nextDouble();

                media[i] = ((n1[i]) * 4 + (n2[i]) * 6) / 10;
            } //fim do for - entrada dos dados manual
            } //fim do else
            //inicio das respostas
            while (sair != 4) { //condição para o menu opções
                op = 0; //inicializando a variavel
                System.out.println("Escolha a opção;\n1-Ordenar por Nome"
                        + "\n2-Ordenar por Média\n3-Buscar um aluno\n4-Fechar programa");
                op = leia.nextInt();

                //Escolha da opção Ordenar
                switch (op) {

                    //Ordena por nome
                    case 1:
                        //codigo de ordenação
                        j = 0; //zera a condição do laço
                        while (j < aluno.length) { //Será responsavel por refazer
                            j++;
                            for (int i = 0; i < aluno.length - 1; i++) {
                                if (aluno[i].compareTo(aluno[i + 1]) > 0) {
                                    String aux; //ordenação do aluno
                                    aux = aluno[i + 1];
                                    aluno[i + 1] = aluno[i];
                                    aluno[i] = aux;

                                    double aux1; //ordenação da nota 1
                                    aux1 = n1[i + 1];
                                    n1[i + 1] = n1[i];
                                    n1[i] = aux1;

                                    double aux2; //ordenação da nota 2
                                    aux2 = n2[i + 1];
                                    n2[i + 1] = n2[i];
                                    n2[i] = aux2;

                                    double aux3; //ordenação da media
                                    aux3 = media[i + 1];
                                    media[i + 1] = media[i];
                                    media[i] = aux3;
                                }  //fim do if
                            } //fim for
                        } //fim do while
                        //imprime a resposta do case 1
                        System.out.println("\nNOME----------------NOTA-------NOTA2-------MÉDIA");
                        for (int i = 0; i < aluno.length; i++) {
                            System.out.printf("->%s -------- %.2f -------- %.2f --------- %.2f"
                                    + "\n", aluno[i], n1[i], n2[i], media[i]);
                        } //fim do for
                        System.out.println(); //Espaçamento
                        break; //Para o Case 1

                    case 2: //vai ordenar conforme a media
                        //codigo de ordenação
                        j = 0; //zera a condição do laço
                        while (j < aluno.length) { //Será responsavel por refazer a ordenação
                            j++;
                            //inicio da ordenação
                            for (int i = 0; i < aluno.length - 1; i++) {
                                //Codigo condicional
                                if (media[i] > media[i + 1]) {
                                    //vai ordenar os nomes conforme o criterio do if (media)
                                    String aux;  //ordenação do aluno
                                    aux = aluno[i + 1];
                                    aluno[i + 1] = aluno[i];
                                    aluno[i] = aux;

                                    double aux1; //ordenação da nota 1
                                    aux1 = n1[i + 1];
                                    n1[i + 1] = n1[i];
                                    n1[i] = aux1;

                                    double aux2; //ordenação da nota 2
                                    aux2 = n2[i + 1];
                                    n2[i + 1] = n2[i];
                                    n2[i] = aux2;

                                    //vai ordenar os nomes conforme o criterio do if (media)
                                    double aux3; //ordenação da media
                                    aux3 = media[i + 1];
                                    media[i + 1] = media[i];
                                    media[i] = aux3;
                                }  //fim do if
                            } //fim for
                        } //fim do while

                        System.out.printf("\nNOME --------------------- MEDIA\n");
                        //laço da impressão

                        for (int i = 0; i < aluno.length; i++) {
                            System.out.printf("->%s ------------ %.2f\n", aluno[i], media[i]);
                        } // fim do for - impressao
                        System.out.println(); //Espaçamento
                        break; //Para o Case 2

                    case 3: //busca por um nome
                        System.out.print("\nInforme o nome do aluno desejado:");
                        busca = leia.nextLine();
                        busca = leia.nextLine(); //opção encontrada para parar o nextLine()
                     
                        int buscaV = Pesquisar(busca, aluno); //Envia o nome de busca e o vetor de aluno
                   
                        if (buscaV != 21) { // Traz a posição do aluno
                        System.out.printf("->%s --> %.2f --> %.2f --> %.2f\n"
                                + "\n", aluno[buscaV], n1[buscaV], n2[buscaV], media[buscaV]); //Dados do aluno na posição
                    } else {
                        System.out.print("Desculpe, aluno não encontrado!\n");
                    } //fim do if
                        break; //Para o Case 3
                    case 4: //sai do programa
                        sair = op;
                        System.out.println("Programa Fechado!");
                        break;
                } //fim do swhith
            } //fim do while
    } //fim do main

    //------------------------------------------------------------------------------------------
                                   /** INICIO DA FUNÇÃO PESQUISAR*/

    //------------------------------------------------------------------------------------------

    public static int Pesquisar(String busca, String aluno[]) { 
        int pos =21; //Inicializa a variavel pos com a posição 21
        for (int i = 0; i < aluno.length; i++) {
            if (busca.equalsIgnoreCase(aluno[i])) {  //Verifica se encontra o aluno
                pos = i;  //Salva a posição do aluno
                System.out.println("\nAluno encontrado!");
            } //fim do if
        } //fim do for
     return pos; //Retorna a posição do aluno encontrado ou o valor 21
    } // fim da função Pesquisar
} //fim da classe Aluno

Pessoal,  a idéia deste blog é ajudar estudantes a tirar suas dúvidas. Ps. Também sou estudante e tenho muiiitas dúvidas! rs...).

Portanto, quem encontrar erros... não me critique, me ajude! 

9 comentários:

  1. Boa thiagao de muito boa ajuda esse blog

    ResponderExcluir
  2. fudeoroso thiago!! mas uma coisa, como faria a busca em função?

    ResponderExcluir
    Respostas
    1. Paizinho creio que a sua pergunta ja está respondida. Acrescentei ao código a função Pesquisar. Ela retornará a posição do aluno e o main irá imprimir os dados desse aluno.

      Espero que tenha ajudado.

      Excluir
  3. Boa noite Thiago! Sou Antonio Bernardo, morro em Teresina-PI. Estou inciando meus estudos em java e utilizando o código que você postou para aprendizado. Gostaria de saber como ficaria o método deletar.
    e-mail: sena.rosa@hotmail.com

    ResponderExcluir