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)

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

Nenhum comentário:

Postar um comentário