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)

quarta-feira, 27 de junho de 2012

Cadastro de aluno e notas - Uso de funções e vetores

Escrever um aplicativo que possa armazenar o nome, as duas notas e a média dos alunos de uma turma. O aplicativo deverá apresentar o seguinte menu:

1 - Cadastrar aluno
2 - Consultar dados de aluno
3 - Alterar dados de aluno
4 - Consultar media da turma
5 - Sair

Implementar cada uma das opções. A média de um aluno é calculada pela média ponderada das notas, sendo que a primeira nota tem peso 3 e a segunda nota tem peso 7.

Código Java


//Autor: Thiago Campos
//Data: 26.06.2012

/**
 *
 * @author Thiago
 */
import java.util.Scanner;

public class Questao03 {

    public static float mediaT = 0; //media da turma
    public static int tam = 50; //var que indica o tamando dos vetores   
    //vetores
    public static Scanner leia = new Scanner(System.in);
    public static int ver[] = new int[tam]; //vetor de verificação
    public static String nome[] = new String[tam]; //vetor que armazena o nome
    public static float nota1[] = new float[tam]; //vetor que armazena a nota1
    public static float nota2[] = new float[tam];  //vetor que armazena a nota2
    public static float media[] = new float[tam];  //vetor que armazena a nota2

    public static void main(String[] args) {
        //declaração de variaveis  
        int menu = 0; //var do menu
        int k = 0; //var usada para indicar o novo cadastro
        int d = 0; //var usada para armazenar a qtd de alunos
        String alterar; //armazena o nome que terar suas notas alteradas
        do {
            System.out.print("\nInforme a opção desejada:"
                    + "\n1 - Cadastrar aluno"
                    + "\n2 - Consultar dados de aluno"
                    + "\n3 - Alterar dados de aluno"
                    + "\n4 - Consultar media da turma"
                    + "\n5 - Sair\n->");
            menu = leia.nextInt();

            switch (menu) {
                case 1:
                    System.out.println("\nOpção 1:\nCADASTRAR UM NOVO ALUNO\n...");

                    d = Cadastrar(k, d); //função cadastrar - retornando d

                    k += 1; //preserva o aluno cadastrado anteriormente
                    break;
                case 2:
                    System.out.println("\nOpção 2:\nCONSULTA DO CADASTRO DE ALUNOS\n...");

                    Consultar(ver); //função consultar
                    break;
                case 3:
                    System.out.println("\nOpção 3: \nALTERAR AS NOTAS DE UM ALUNO CADASTRADO\n...");
                    System.out.println("Informe o nome do aluno para alterar as notas:");
                    alterar = leia.nextLine();
                    alterar = leia.nextLine();

                    Alterar(alterar); //função Alterar
                    break;
                case 4:
                    System.out.println("\nOpção 4:\nCONSULTAR A MÉDIA DA TURMA\n...");

                    mediaT = Media(mediaT) / d; //função media dividido por numero de alunos cadastrados

                    System.out.printf("A média da turma é %.2f\n", mediaT);

                    mediaT = 0; //zerar a var para uma nova consulta
                    break;
                case 5:
                    System.out.println("\nOpção 5:\nPrograma fechado.\n...");
                    break;
                default:
                    System.out.println("Opção Errada");
                    break;
            }
        } while (menu != 5);

    } //fim do main

    /**
     * .................FUNÇÃO PARA CADASTRAR UM NOVO ALUNO....................
     */
    public static int Cadastrar(int k, int d) {
        for (int i = k; i < nome.length; i++) {
            System.out.println("Informe o nome do aluno " + (i + 1) + ":");
            nome[i] = leia.nextLine();
            nome[i] = leia.nextLine();
            ver[i] = 1; //informa que esta entrada está ativa
            d += 1; //conta a qtd de aluno
            System.out.print("Informe a nota 1 do aluno " + (i + 1) + ":");
            nota1[i] = leia.nextFloat();
            System.out.print("Informe a nota 2 do aluno " + (i + 1) + ":");
            nota2[i] = leia.nextFloat();
            media[i] = (nota1[i]*3 + nota2[i]*7) / 10;
            break;
        }
        return (d);
    } //fim da Função cadastrar

    /**
     * ................FUNÇÃO PARA CONSULTAR CADASTRO DE ALUNO.................
     */
    public static void Consultar(int ver[]) {
        for (int i = 0; i < nome.length; i++) {
            if (ver[i] == 1) {
                System.out.println((i + 1) + ") " + nome[i] + " - notas: " + nota1[i]
                        + ", " + nota2[i] + " - média:" + media[i]);
            } //fim do for
        }
    } //fim da funçao Consultar

    /**
     * ................FUNÇÃO PARA ALTERAR CADASTRO DE ALUNO.................
     */
    public static void Alterar(String alterar) {
        for (int i = 0; i < nome.length; i++) {
            if (alterar.equalsIgnoreCase(nome[i])) {
                System.out.print("Informe a primeira nota do aluno " + nome[i] + ":");
                nota1[i] = leia.nextFloat();
                System.out.print("Informe a segunda nota do aluno " + nome[i] + ":");
                nota2[i] = leia.nextFloat();
                media[i] = (nota1[i]*3 + nota2[i])*7 / 10;
            }
        }
    } //fim da função Alterar

    /**
     * ................FUNÇÃO PARA ALTERAR CADASTRO DE ALUNO.................
     */
    public static float Media(float mediaT) {
        for (int i = 0; i < nome.length; i++) {
            mediaT = mediaT + media[i];
        }
        return mediaT;
    } //fim da função Media   
} //fim da classe

terça-feira, 26 de junho de 2012

Questão resolvida com Função.

Escrever um Programa que lê um nome de uma pessoa com Nome e Sobrenome e:
(a) Imprimir quantas letras tem o nome e o sobrenome (1,0 ponto)
(b) Imprimi-lo de trás para frente, letra por letra ( 0,75 ponto)
(c) Imprimi-lo no formato “Sobrenome, Nome ”.(0,75)
          Exemplos:  JUCA DA SILVA - > SILVA, JUCA
                           THIAGO CAMPOS DE CAMPOS -> CAMPOS, THIAGO


Código Java

//Autor: Thiago Campos
//Data: 26.06.2012

/**
 *
 * @author Thiago
 */
import java.util.Scanner;

public class Questao02 {
    //variaveis globais
    public static int indEsp = 0; //armazena o indice do espaço
    public static String nomeC; //armazena o nome completo

    public static void main(String[] args) {
        //variaveis locais
        Scanner leia = new Scanner(System.in);
        String nome = ""; //armazena o primeiro nome
        String sobre = ""; //envia "" para a função
        String sobreNome; //armazena o retorno da função
        String nomeInv = ""; //recebe o nome invertido
        int i = 0; //variavel auxiliar

        //entrada do nome completo
        System.out.println("Informe o nome e sobrenome desejado:");
        nomeC = leia.nextLine();

        nomeC.trim(); //remove os espaços do inicio e do final da String

        //separa o nome da String
        do {
            nome = nome + nomeC.charAt(i);
            i++;
            indEsp = i + 1;
        } while (nomeC.charAt(i) != ' '); //fim do while

        //separa o sobrenome da String
        sobreNome = Sobre(sobre);

        //inverte a String digitada
        for (i = (nomeC.length() - 1); i >= 0; i--) {
            nomeInv = nomeInv + nomeC.charAt(i);
        }
        //saida do codigo
        System.out.println("nome -> " + nome + " -> " + nome.length() + " letras.");
        System.out.println("sobrenome -> " + sobreNome + " -> " + sobreNome.trim().length() + " letras."); //trim() para remover os espaços
        System.out.println("O nome invertido é: " + nomeInv);
        System.out.println("\nResposta c: " + sobreNome + ", " + nome);

    } //fim do main

    public static String Sobre(String sobre) {
        for (int i = indEsp; i < nomeC.length(); i++) {
            sobre = sobre + nomeC.charAt(i);
            if (nomeC.charAt(i) == ' ') {
                break;
            }
        } //fim do for

        //caso após o nome seja "de"/"da"/"das"/"dos" remove       
        if (sobre.length() <= 4) {
            sobre = "";
            sobre = sobre + nomeC.substring(indEsp + 3, nomeC.length());
            } //fim do for
        }

Questão respondida usando vetores.

Escrever um programa que
(a) leia um conjunto de 10 notas, armazenando-as em uma variável composta do tipo VETOR; (0,5 ponto)
(b) calcule e imprima a sua média; (1,5 ponto)
(c) calcule e imprima o número de alunos com nota superior à média 7,0 (0,5 ponto)
(d) calcule e imprima o número de alunos com nota inferior a 3,0 (0,5 ponto)

Código Java

//Autor: Thiago Campos
//Data: 25.06.2012

/**
 *
 * @author Thiago
 */
import java.util.Scanner;

public class Questao01 {
    public static void main(String[] args){
        //declaração de variaveis
        Scanner leia = new Scanner(System.in);
        int k = 10;
        int contM=0, cont=0;
        float nota[] = new float[k];
       
        //entrada dos dados
        for(int i=0; i<k;i++){
            System.out.println("Informe a nota do aluno("+(i+1)+"):");
            nota[i]=leia.nextFloat();
        }
       
        //verificando a qtd de alunos conforme a media
        for(int i=0; i<k;i++){
            if(nota[i] > 7){
                contM = contM + 1;
            } //fim do if
            if(nota[i] < 3){
                cont = cont + 1;
            } //fim do if
           
        } //fim do for
        System.out.println("\nO numero de alunos que tiraram acima de 7,0 foi " + contM);
        System.out.println("O numero de alunos que tiraram nota menor a 3,0 foi " + cont);
   
    } //fim do main
} //fim da classe



domingo, 17 de junho de 2012

Usando Funções em Seq. Fibonacci, encontro das raizes quadradas, mês por extenso e compraração de 2 números.

Elabore um programa em Java onde o usuário escolha que tipo de operação fazer dentre das seguintes opções.
a. Número pertence a seqüencia de fibonacci: dado um número (N) calcular se o número pertence a seqüência de fibonacci, retornando true ou false. 
b. Calcular raízes de uma função de segundo grau: Criar uma função que recebe por parâmetro os valores necessário para o cálculo da fórmula de báskara e retorna, também por parâmetro, as suas raízes, caso seja possível calcular. Os valores devem ser colocados em variáveis globais 
c. Mês por Extenso: Criar uma função que, recebe como parâmetro um mês (número inteiro de 1 a 12), retorne o nome do mês por extenso.
d. Menor número: função que compara dois números e retorna o maior.

Código Java

//Autor: Thiago Campos
//Data: 16.06.2012
//Trabalho de Laboratório de Algoritmo

import java.util.Scanner;

/**
 *
 * @author Thiago
 */
public class TrabFuncao {
    //declaração das variaveis globais   
    static double x1 = 0.0;
    static double x2 = 0.0;

    public static void main(String args[]) {
        //declaração das variaveis locais
        Scanner leia = new Scanner(System.in);
        int op = 0;
        long buscaTermo;
        int qtdTermo;
        double a;
        double b;
        double c;
        int mes;
        int n1, n2;

        while (op != 5) {
            System.out.print("\nMenu Opções:"
                    + "\n1 - Buscar um termo na sequencia Fibonacci"
                    + "\n2 - Encontrar o Conjunto Soluções de uma Equação do Segundo Grau."
                    + "\n3 - Escrever o mês por extenso."
                    + "\n4 - Encontrar o menor numero."
                    + "\n5 - Sair.\n");
            System.out.print("->");

            op = leia.nextInt();

            switch (op) {
                case 1:
                    //Informa o tamanho da sequencia. Funciona bem até o termo 93
                    System.out.print("Informe a quantidade de termos da sequencia Fibonacci:");
                    qtdTermo = leia.nextInt();

                    //Informao termo a ser buscado
                    System.out.print("Informe o termos a ser buscado:");
                    buscaTermo = leia.nextInt();

                    Fibonacci(buscaTermo, qtdTermo); //Função Fibonacci
                    break;
                case 2:
                    System.out.print("Informe o valor de \"a\" da equação do segundo grau:");
                    a = leia.nextInt();
                    System.out.print("Informe o valor de \"b\" da equação do segundo grau:");
                    b = leia.nextInt();
                    System.out.print("Informe o valor de \"c\" da equação do segundo grau:");
                    c = leia.nextInt();

                    /**
                     * //testa as variaveis globais antes da chamada do metodo
                     * System.out.println("antes x1 -> "+x1);
                     * System.out.println("antes x2 -> "+x2);
                     */
                    Equacao(a, b, c);

                    /**
                     * //testa as variaveis globais depois da chamada do metodo
                     * System.out.println("\ndepois x1 -> "+x1);
                     * System.out.println("depois x2 -> "+x2);
                     */
                    break;
                case 3:
                    System.out.print("Informe o numero referente ao mês desejado:");
                    mes = leia.nextInt();

                    System.out.println("RESPOSTA: -> " + MesExtenso(mes));
                    break;
                case 4:
                    System.out.print("Informe os dois numeros a serem comparados:\n->");
                    n1 = leia.nextInt();
                    System.out.print("->");
                    n2 = leia.nextInt();

                    //Verifica se os valores são iguais antes de entrar na função
                    if (n1 == n2) {
                        System.out.println("RESPOSTA: -> O numeros são iguais!");
                    } else {
                        System.out.println("RESPOSTA: -> O maior numero dos dois é: " + Maior(n1, n2));
                    }
                    break;
                case 5:
                    System.out.println("Saindo do programa");
                    break;
                default:
                    System.out.println("Opção Inválida, tente denovo!");
            } //fim da switch
        } //fim do while
    } // fim do main

//------------------------------------------------------------------------------ 
    /**
     * NÚMERO PERTENCE A SEQÜENCIA DE FIBONACCI: DADO UM NÚMERO (N) CALCULAR SE
     * O NÚMERO PERTENCE A SEQÜÊNCIA DE FIBONACCI, RETORNANDO TRUE OU FALSE.
     */
//------------------------------------------------------------------------------
    public static void Fibonacci(long busca, int tamanho) {
        //declaração das variaveis locais
        long fib1 = 0;
        long fib2 = 1;

        //variavel inicializada
        String achou = "RESPOSTA: -> O termo não pertence a sequencia Fibonacci.";

        //processamento da sequencia
        for (int i = 1; i <= tamanho; i++) {
            long temp = fib1;
            fib1 = fib1 + fib2;
            fib2 = temp;

            //busca e guarda o termo e a posição
            if (busca == fib2) {
                achou = "RESPOSTA: -> O termo " + fib2 + " foi encontrado na posicao " + i;
            }
            // imprime a sequencia Fibonacci
            // System.out.println(i + ": " + fib2);
        }
        // imprime achou
        System.out.println(achou);
    } // fim da classe Fibonacci

//------------------------------------------------------------------------------ 
    /**
     * CALCULAR RAÍZES DE UMA FUNÇÃO DE SEGUNDO GRAU: CRIAR UMA FUNÇÃO QUE
     * RECEBE POR PARÂMETRO OS VALORES NECESSÁRIO PARA O CÁLCULO DA FÓRMULA DE
     * BÁSKARA E RETORNA, TAMBÉM POR PARÂMETRO, AS SUAS RAÍZES, CASO SEJA
     * POSSÍVEL CALCULAR.OS VALORES DEVEM SER COLOCADOS EM VARIÁVEIS GLOBAIS
     */
//------------------------------------------------------------------------------
    public static void Equacao(double num1, double num2, double num3) {
        //declara a variavel local
        double delta;

        // processamento
        delta = Math.pow(num2, 2) - 4 * num1 * num3;

        if (delta < 0) { //Para o delta menor Negativo
            x1 = -num2 / 2 * num1;
            x2 = -num2 / 2 * num1;
        } else { //Para o delta menor Positivo
            x1 = (-num2 + Math.sqrt(delta)) / (2 * num1);
            x2 = (-num2 - Math.sqrt(delta)) / (2 * num1);
        }
        //Conjunto solução
        System.out.printf("\nRESPOSTA: -> O Conjunto solução é (%.2f, %.2f)\n", x1, x2);
    } //fim da Classe Equacao
//------------------------------------------------------------------------------ 

    /**
     * MÊS POR EXTENSO: CRIAR UMA FUNÇÃO QUE, RECEBE COMO PARÂMETRO UM MÊS
     * (NÚMERO INTEIRO DE 1 A 12), RETORNE O NOME DO MÊS POR EXTENSO.
     */
//------------------------------------------------------------------------------
    public static String MesExtenso(int mes) {
        String mesExt = "";

        switch (mes) {
            case 1:
                mesExt = "Janeiro";
                return mesExt;
            case 2:
                mesExt = "Fevereiro";
                return mesExt;
            case 3:
                mesExt = "Março";
                return mesExt;
            case 4:
                mesExt = "Abril";
                return mesExt;
            case 5:
                mesExt = "Maio";
                return mesExt;
            case 6:
                mesExt = "Junho";
                return mesExt;
            case 7:
                mesExt = "Julho";
                return mesExt;
            case 8:
                mesExt = "Agosto";
                return mesExt;
            case 9:
                mesExt = "Setembro";
                return mesExt;
            case 10:
                mesExt = "Outubro";
                return mesExt;
            case 11:
                mesExt = "Novembro";
                return mesExt;
            case 12:
                mesExt = "Dezembro";
                return mesExt;
            default:
                System.out.println("RESPOSTA: -> Não existe esse mês!");
                return mesExt;
        } //fim do swiitch
        //Tem que existir um return para cada possibilidade de resposta
    } //fim da classe MesExt

//------------------------------------------------------------------------------ 
    /**
     * MENOR NÚMERO: FUNÇÃO QUE COMPARA DOIS NÚMEROS E RETORNA O MAIOR.
     */
//------------------------------------------------------------------------------
    public static int Maior(int a, int b) {
        if (a > b) {
            return a;
        } else {
            return b;
        } // fim do else
    } //fim da classe Maior
} // fim da classe TrabFuncao