PI 2018-Q1 - Correção Lista 4

Clique aqui para baixar o arquivo .java diretamente.

public class Exercicios_Funcoes {

    public static void main(String[] args){
        System.out.println("igual(2.1,2.2,0.01)="+igual(2.1,2.2,0.01));
        System.out.println("igual(0.3,0.33,0.1)="+igual(0.3,0.33,0.1));
        System.out.println("contaVogais(\"TestE\")="+contaVogais("TestE"));
        System.out.println("contaVogais(\"tsktsk\")="+contaVogais("tsktsk"));
        System.out.println("contaPalavras(\"Wow\")="+contaPalavras("Wow"));
        System.out.println("contaPalavras(\"Deu certo\")="+contaPalavras("Deu certo"));
        System.out.println("contaPalavras(\"\")="+contaPalavras(""));
        System.out.println("contaConsoantes(\"Wow\")="+contaConsoantes("Wow"));
        System.out.println("contaConsoantes(\"Deu certo\")="+contaConsoantes("Deu certo"));
        System.out.println("contaConsoantes(\"\")="+contaConsoantes(""));
        System.out.println("estaDentro(1,1,2,2,5)="+estaDentro(1,1,2,2,5));
        System.out.println("estaDentro(1,1,0,0,0.2)="+estaDentro(1,1,0,0,0.2));
        System.out.println("estaDentro(5,5,0,0,5)="+estaDentro(5,5,0,0,5));
        System.out.println("mediana(1,2,3)="+mediana(1,2,3));
        System.out.println("mediana(3,2,1)="+mediana(3,2,1));
        System.out.println("mediana(2,2,1)="+mediana(2,2,1));
        System.out.println("mediana(1,2,2)="+mediana(1,2,2));
        System.out.println("mediana(10,1,9)="+mediana(10,1,9));
        System.out.println("paraBinario(\"111\")="+paraBinario("111"));
        System.out.println("paraBinario(\"1010\")="+paraBinario("1010"));
        System.out.println("convertePlaca(\"AAA0000\")="+convertePlaca("AAA0000"));
        System.out.println("convertePlaca(\"BAA0000\")="+convertePlaca("BAA0000"));
    }

    public static boolean igual(double x, double y, double tol){
        return Math.abs(x-y) <= tol;
    }

    public static int contaVogais(String msg){
        int numVogais = 0;
        msg = msg.toLowerCase();
        for(int i=0;i<msg.length();++i){
            switch(msg.charAt(i)){
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    numVogais++;
                    break;
            }
        }
        return numVogais;
    }

    public static int contaPalavras(String msg){
        int numPalavras = msg.length() > 0 ? 1 : 0;
        msg = msg.toLowerCase();
        for(int i=0;i<msg.length();++i){
            if(msg.charAt(i) == ' '){
                ++numPalavras;
            }
        }
        return numPalavras;
    }


    public static int contaConsoantes(String msg){
        //contaPalavras(msg) = # numero de espaços na mensagem + 1
        return msg.length() > 0 ? (msg.length() - contaVogais(msg) - (contaPalavras(msg) - 1)) : 0;
    }

    public static boolean estaDentro(double x, double y,
                                    double cx, double cy, double r){
        return Math.pow(x-cx, 2) + Math.pow(y-cy, 2) <= Math.pow(r,2);
    }

    public static int mediana(int e1, int e2, int e3){
        if(e1 >= e2 && e1 <= e3) return e1;
        if(e1 >= e3 && e1 <= e2) return e1;
        if(e2 >= e1 && e2 <= e3) return e2;
        if(e2 >= e3 && e2 <= e1) return e2;
        return e3;
    }

    public static int paraBinario(String bits){
        int num = 0;
        for(int i=0;i<bits.length();++i){
            num += bits.charAt(i) == '1' ? Math.pow(2,bits.length()-i-1) : 0;
        }
        return num;
    }

    public static int convertePlaca(String placa){
        int v_letras = 0;
        int v_num = 0;
        for(int i=0;i<3;++i){
            v_letras += (placa.charAt(i)-'A') * Math.pow(26, 2-i);
        }
        for(int i=0;i<4;++i){
            v_num += (placa.charAt(3+i)-'0') * Math.pow(10, 3-i);
        }
        return v_letras * 10000 + v_num;
    }


}