Exercicios - nivel 3 e 4 (2ª prova)

Para cada um dos problemas a seguir, construa um programa em Java para resolver o que se pede. Lembre-se de, primeiramente, determinar quais são os dados de entrada e se for o caso solicitá-los ao usuário. Determine também o que deve ser processado e, finalmente, o que deve ser exibido ao usuário.

Nível 3:

19. Calcule o fatorial de um número.

/* Autor: Henrique Monteiro Cristovão
*/
package exercicio19;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        int contador = 1, resultado = 1, valor;
        System.out.println("Qual o valor para calculo do fatorial?");
        valor = new Scanner(System.in).nextInt();
        while(contador <= valor) {
            resultado = resultado * contador;
            contador = contador + 1;
        }
        System.out.println(resultado);
    }
}

20. (responsável: Hans ) Solicite ao usuário a idade de cada um componente de um grupo de pessoas. A quantidade de pessoas também será determinada por ele.
Após o término da entrada, apresente:
a. a média das idades,
b. a maior idade,
c. a menor idade,
d. a quantidade de pessoas maior de idade.

import java.util.Scanner;
 
public class aa1 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int idade, idade2=0, idade3=200, imaior=0, imenor=0, Quant, aux=0, total=0, media, soma=0;
        System.out.print("Digite a quantidade de pessoas:");
        Quant = new Scanner(System.in).nextInt();
        while(aux<Quant){
            System.out.print("Digite a idade da pessoa:");
            idade = new Scanner(System.in).nextInt();
            soma+=idade;
            if(idade>idade2){
                idade2=idade;
            }if(idade<idade3){
                idade3=idade;
 
            }if(idade>=18)
            {
                imaior++;
            }aux++;
        }
            media=soma/Quant;
            System.out.print("media das idades:" +media+ ";"
                             +"a maior idade é de" +idade2+ "anos;"
                             +"a menor idade é de" +idade3+ "anos;" 
                             +"a quantidade de pessoas maior de idade:"+imaior );
    }
}

21. (responsável: Henrique ) Crie um jogo para o usuário descobrir um número sorteado de 1 a 100. A cada tentativa dele, forneça uma dica falando se o número é maior ou menor. Quando ele descobrir exiba uma mensagem de parabéns e mostre em quantas tentativas ele conseguiu.


22. (responsável: Hercules ) Descubra e apresente o maior entre três números fornecidos pelo usuário. Caso eles sejam iguais, avise ao usuário.

23. Coloque em ordem crescente três números quaisquer.
Como desafio, tente depois fazer uma solução com apenas 3 estruturas de decisão.

// Autor: Henrique Monteiro Cristovão
package exercicio23;
public class Principal {
    public static void main(String[] args) {
        int valor1, valor2, valor3, auxiliar;
        valor1 = (int)(Math.random()*10)+1;
        valor2 = (int)(Math.random()*10)+1;
        valor3 = (int)(Math.random()*10)+1;
        if(valor1 > valor2) {
            auxiliar = valor2;
            valor2   = valor1;
            valor1   = auxiliar;
        }
        if(valor2 > valor3) {
            auxiliar = valor3;
            valor3   = valor2;
            valor2   = auxiliar;
        }
        if(valor1 > valor2) {
            auxiliar = valor2;
            valor2   = valor1;
            valor1   = auxiliar;
        }
        System.out.println("Valor menor: "+valor1);
        System.out.println("Valor mediano: "+valor2);
        System.out.println("Valor maior: "+valor3);
    }
}

24. (responsável: Igor Teixeira ) Aproveitando o algoritmo do exercício anterior, exiba uma lista de 40 grupos de números sorteados de 0 a 59. Cada grupo possui 3 números e deve exibido em ordem crescente.


25. (responsável: Julia ) Calcule a média aritmética de 500 valores fornecidos pelo usuário.


26. (responsável: Lucas ) Modifique o problema anterior para que a quantidade de valores também seja fornecida pelo usuário.


27. (responsável: Luiz Paulo ) Determine o maior valor de uma lista de 100 números fornecidos pelo usuário.

27. Determine o maior valor de uma lista de 100 números fornecidos pelo usuário, acrescentado a possibilidade do usuario determinar a quatidade de numeros

package Exc;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        double n1=0,maior=0; int contador = 1;int qtde =0;
        System.out.print ("Entre com a quantidade de numero de sua Lista.");
        qtde = new Scanner(System.in).nextInt();
        while (contador <= qtde){
            System.out.print("Entre com os numeros.");
            n1 = new Scanner(System.in).nextDouble();
            if (n1 >maior){
                maior = n1;
            }
            contador = contador + 1;
        }
        System.out.print ("o maior numero que vc digitou foi:"+maior);
    }
}

28. (responsável: Maxwell ) Determine a quantidade de homens e mulheres (separadamente) que são maiores de idade, baseado numa lista de 200 pessoas.

package exercicio28;
import java.util.Scanner;
public class principal {
 
    /*
     * 28.    Determine a quantidade de homens e mulheres (separadamente) 
     * que são maiores de idade, baseado numa lista de 200 pessoas.
     */
    public static void main(String[] args) 
    {
        int homem=0, mulher=0, idade=0, total=0;
        System.out.println("Entre com a quantidade de pessoas:");
        total = new Scanner (System.in).nextInt();
        for(int i=1;i<=total;i++)
        {
            System.out.println("Sexo da pessoa?");
            String sexo = new  Scanner(System.in).next();
            System.out.println("Qual a sua idade?");
            idade = new Scanner (System.in).nextInt();
            if(idade>=18)
            {
                if(sexo.toUpperCase().equals("M"))
                {
                    homem++;
                }
                else
                {
                    mulher++;
                }
            }
        }
        System.out.println ("Existem "+mulher+" mulheres e "+homem+" homems maiores de idade.");
    }
}

29. (responsável: Napoliana ) Leia uma relação de pacientes de uma clínica, cada um com o nome, o sexo, o peso, a idade e a altura. Para sinalizar o fim da lista será fornecido “fim” no nome do último paciente.
Exiba um relatório contendo:
i. a quantidade de pacientes.
ii. a média de idade dos homens.
iii. a quantidade de mulheres com altura entre 1,60 e 1,70 e peso acima de 70kg.
iv. a quantidade de pessoas com idade entre 18 e 25.
v. o nome do paciente mais velho.
vi. o nome da mulher mais baixa.
vii. – neste item, você cria uma situação interessante constrói o algoritmo correspondente.


30. (responsável: Pedro Altoé ) Descida se um aluno será aprovado, reprovado por nota ou reprovado por faltas. Use o sistema de avaliação da FAESA. Pergunte ao usuário a quantidade de notas para cálculo da média semestral, sendo que todas elas possuem o mesmo peso.

import java.util.*;
 
public class exercicio1 {
 
    public static void main(String[] args) {
        double media = 0 , notatual = 0;
        int qtdnota, qtdfalta, horasaula;
 
        System.out.println("Entre com a quantidade de notas:");
        qtdnota = new Scanner(System.in).nextInt();
        System.out.println("Entre com a quantidade de faltas");
        qtdfalta = new Scanner(System.in).nextInt();
        System.out.println("Entre com a quantidade de horas-aula ministradas:");
        horasaula = new Scanner(System.in).nextInt();
        if (qtdfalta > (horasaula*25/100)){
            System.out.println("Você está reprovado por falta!!!");
        }else{
            for(int i = 1; i <= qtdnota; i++ ){
                System.out.println("Entre com a nota "+i);
                notatual = new Scanner(System.in).nextDouble();
                media = media + notatual;
            }
            media = media/qtdnota;
            if (media <= 5){
                System.out.println("Infelizmente você está reprovado por nota");
 
            }else{
                System.out.println("Você foi aprovado!");
            }
        }
 
    }
 
}

31. (responsável: Rafael Martins ) Exiba os 50 primeiros números da seqüência de Fibonacci (1,1,2,3,5,8,13,21,34,55,89,144,233,377,…).

package lista;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        long prim = 1, seg = 1, ter;
        System.out.print("numeros da serie fibonacci: 1,1");
        for(int i = 1; i <=50; i++){
            ter = prim + seg;
            System.out.print("," +ter);
            prim = seg;
            seg = ter;
        }
 
    }
 
}

32. (responsável: Renan ) Imprima exatamente o n-ezimo termo da seqüência de Fibonacci.

import java.util.Scanner;
public class n_esimo{
    public static void main(String[] args) {
        int num=1, num2=1, soma, num3, num4; 
        do{
            System.out.println("Digite a quantidade de numeros da sequencia: ");
            num4 = new Scanner (System.in).nextInt();
        }while(num4 <0);
        do{
            System.out.println("Digite qual posição da sequencia de Fibonacci deseja consultar: ");
            num3 = new Scanner (System.in).nextInt();
        }while (num3<2);
        for (int i = 1; i < num4; i++)
        { soma = num + num2;
            if ( i == num3)
            {System.out.print("O numero na posição " + num3 +"º é:" + soma);
        }
            num = num2;
            num2 = soma;
        }
 
    }
 
}

33. (responsável: Renzo ) Exiba os n primeiros termos da seqüência de Tribonacci (soma dos três anteriores). Inicia com 1,1 e 2.


34. (responsável: Ricardo Barboza ) A história do rei que e tornou pobre: após perder uma aposta com um súdito, ele teve que pagar uma quantia muito grande em sacos de arroz. A aposta feita anteriormente era que se o súdito ganhasse o rei teria que pagar um grão de arroz colocado na primeira casa de um tabuleiro de xadrez. Na segunda casa teria que pagar o dobro, ou seja, dois grãos de arroz, e assim sucessivamente até a casa número 64. Exiba quantos grãos de arroz este súdito teria que ganhar, somando todas as 64 casas.
Depois tente exibir a quantia de sacos de arroz?


35. (responsável: Ricardo Emiliano ) Exiba a tabuada de um número fornecido pelo usuário. Por exemplo se ele digitar o número 5, então será mostrado:

/*// Ricardo Emiliano
*/
package exemplo35;
import java.util.Scanner;
public class Principal {
        public static void main(String[] args) {
            int nun, cont = 0, aux = 10, resultado=0;
            System.out.println("Entre com o numerio que deseza multiplica");
            nun = new Scanner(System.in).nextInt();
            while(cont <= aux){
                resultado = cont * nun;
                System.out.println(+nun +"X" +cont +"=" +resultado);
                cont++;
            }
 
       }
 
}

Dica: a tabulação em Java é: \t

36. (responsáveis: Ronieri, Vitor Oliveira ) Apresente uma tabela de conversão de reais em dólares. Ela deve ser totalmente configurável, ou seja o usuário pode informar o valor inicial e final, o valor de incremento e o valor de 1 dólar. Apresente os números no formato monetário com duas casas decimais.

/* Autor: Filipe Thomé Rangel
*/
package nivel2;
import java.util.Scanner;
public class numero36 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        double dolar, inicio, fim, incremento;
        System.out.println("Entre com o valor inicial");
        inicio = new Scanner(System.in).nextDouble();
        System.out.println("Entre como valor final");
        fim = new Scanner(System.in).nextDouble();
        System.out.println("Entre como valor do incremento");
        incremento = new Scanner(System.in).nextDouble();
        System.out.println("Entre como valor do dolar");
        dolar = new Scanner(System.in).nextDouble();
        while(inicio < fim){
            System.out.println("Real: "+inicio+"  =  Dolar: "+inicio*dolar);
            inicio+= incremento;
 
        }
 
    }
 
}
//Autor: Renan de Aquino Ribeiro. 
       /*Outra solução
    */
 
import java.util.Scanner;
 
public class Exercico36 {
 
    public static void main(String[] args) {
 
        double valorD, valorFi, dolar, valorIn;
        int incre, aux=0;
        System.out.print("Digite o valor inicial:");
        valorIn = new Scanner(System.in).nextDouble();
        System.out.print("Digite o valor final:");
        valorFi = new Scanner(System.in).nextDouble();
        System.out.print("Digite o valor do incremento:");
        incre = new Scanner(System.in).nextInt();
        System.out.print("Digite o valor do dólar:");
        dolar = new Scanner(System.in).nextDouble();
        while(aux < valorFi){
            valorD = valorIn / dolar;
            System.out.print(valorIn+" | "+valorD+"\n");
            valorIn += incre;
            aux = (int) valorIn;
        }
    }
}

37. (responsáveis: Sandrielle, Rafaela ) A operadora de celular Vai-Vai possui um plano com o valor mensal de 50,00 que permite 100 minutos por mês para qualquer número. Além disso, ela oferece 50 minutos a mais para ligações destinadas a um número da própria Vai-Vai. Ainda neste plano ela tem uma promoção onde cada minuto gasto para telefone fixo consome somente a metade. O valor do minuto excedente para outras operadoras é de 0.65, e para a própria Vai-Vai é 0.20.
Faça um programa que permita ao usuário entrar com o tipo de ligação (‘o’ = outras operadoras, ‘v’ = a própria Vai-Vai, ou ‘f’ = telefone fixo) e a quantidade de minutos. A cada entrada, deve-se informar o quanto que ele tem de saldo e o valor a pagar. Faça isto enquanto ele indicar que existem mais ligações a serem digitadas.


38. (responsáveis: Sandro, Lorhan ) Crie um programa para simular uma urna de votação para exatamente 3 candidatos. Logo no início deve-se perguntar ao usuário os nomes dos candidatos. Permita votos em branco.
Ao término de toda a entrada, apresente o nome, a quantidade de votos e o percentual de cada candidato. Apresente também a quantidade e o percentual dos votos em branco e quem foi o ganhador da eleição.


39. (responsáveis: Shayene, Igor Vieira ) Exiba todas as datas de um calendário que estão entre duas datas informadas pelo usuário (dia, mês e ano). Suponha que as duas datas informadas sejam válidas.


Nível 4:

40. (responsável: Simone ) Exiba as 10 tabuadas (de 1 a 10). Dica: use dois comandos while aninhados, ou seja um dentro do outro.

public class Principal {
 
    public static void main(String[] args) {
        int fator1=1;
        int fator2;
        while (fator1 < 10){           fator2=1;
        while (fator2 < 10){
            System.out.println (fator1 +"x" + fator2+"="+(fator1* fator2));
            fator2 = fator2+1;
        }
            fator1 = fator1+1;
 
        }
 
        }
 
    }

41. (responsáveis: Tales, Matheus ) Apresente uma tabela contendo a evolução do valor de uma dívida ao longo dos meses e anos a partir de janeiro de 2007. Solicite o valor da dívida, a taxa de correção e a quantidade de anos.
Por exemplo, para uma dívida de R$ 100,00 ao longo de 2 anos e com uma taxa de correção de 1.8 % ao mês:
Anos Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
2007 100,00 101,80 103,63 105,50 107,40 109,33 111,30 113,30 115,34 117,42 119,53 121,68
2008 123,87 126,10 128,37 130,68 133,03 135,43 137,87 140,35 142,87 145,45 148,06 150,73

// Autor: Matheus Ferreira Martins (Obs. ué ele marco o 41 pra mim na sexta...)
package Exercício_41;
import java.text.NumberFormat;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        int QtdeAnos, C, L, Ano;
        float ValorDiv, ValorFin, TaxCorrInicial, TaxCorr;
        System.out.println("Entre com o valor da dívida(em R$):");
        ValorDiv = new Scanner(System.in).nextFloat();
        System.out.println("Entre com a taxa de correção(em %):");
        TaxCorr = new Scanner(System.in).nextFloat();
        System.out.println("Entre com a quantidade de anos:");
        QtdeAnos = new Scanner(System.in).nextInt();
        ValorFin = ValorDiv;
        TaxCorr = (TaxCorr/100 + 1);
        TaxCorrInicial = TaxCorr;
        Ano = 2007;
        L = 1;
        System.out.println("|Anos |  Janeiro  | Fevereiro |   Março   |   Abril   |    Maio   |   Junho   |   Julho   |   Agosto  | Setembro  |  Outubro  | Novembro  | Dezembro  |");
        while (L <= QtdeAnos) {
            C = 1;
            System.out.print("|"+Ano+" | ");
            while (C <= 12) {
                NumberFormat R$ = NumberFormat.getCurrencyInstance();
                String dívida = R$.format(ValorFin); 
                System.out.print(dívida+" | ");
                ValorFin = ValorDiv * TaxCorr;
                TaxCorr = TaxCorrInicial * TaxCorr;
                C = C + 1;
            }
            System.out.print("\n");
            Ano = Ano+1;
            L = L + 1;
        }
 
    }
}

42. (responsáveis: Thiago, Janine ) Desenhe a seguinte pirâmide de asteriscos. O usuário determina a quantidade de linhas.
*
**
***
****
*****
******
*******
********
*********

// Autor: Thiago Bortole Fonseca
package exercicio42;
 
import java.util.Scanner;
public class principal {
    public static void main(String[] args) {
        int linha=1, linhas=0, coluna=1;
        System.out.println("Entre com o número de linhas:");
        linhas = new Scanner(System.in).nextInt();
        while (linha <= linhas) {
            while (coluna <= linha){
                System.out.print("*");
                coluna++;
            }
            coluna=1;
            System.out.println("");
            linha++;        
 
        }
 
    }
 
}
//Autora: Janine Oliveira da Cruz
package exercicio42;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        int quantLinhas,linha=1,i;
        String saida = "";
        System.out.println("digite a quantLinhas");
        quantLinhas = new Scanner(System.in).nextInt();
        while(linha <= quantLinhas){
            i=1;
            while(i <= linha){
                System.out.print("*");
                i=i+1;
            }
            System.out.print("\n");
            linha=linha+1;
        }
 
    }
}

43. (responsáveis: Valério, Guilherme ) Desenhe a seguinte pirâmide de números. O usuário determina a quantidade de linhas.
01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
06 06 06 06 06 06
07 07 07 07 07 07 07
08 08 08 08 08 08 08 08
09 09 09 09 09 09 09 09 09
10 10 10 10 10 10 10 10 10 10
11 11 11 11 11 11 11 11 11 11 11

package lista;
/* 43.    Desenhe a seguinte pirâmide de números. O usuário determina a quantidade de linhas.
01 
02 02 
03 03 03 
04 04 04 04 
05 05 05 05 05 
06 06 06 06 06 06 
07 07 07 07 07 07 07 
08 08 08 08 08 08 08 08 
09 09 09 09 09 09 09 09 09 
...
 */
import java.util.Scanner;
public class ex43 {
    public static void main(String[] args) {
        int linha, coluna, contador=1;
        System.out.println("Coloque o número de linhas da pirâmide");
        linha = new Scanner(System.in).nextInt();
        while(contador<=linha){
            coluna =1;
            while(coluna<=contador){
                System.out.print(contador+ " ");
                coluna = coluna + 1;
            }
            System.out.println(" ");
            contador=contador+1;
        }
 
    }
}

44. (responsável: Vinnicius ) Desenhe a seguinte pirâmide de números. O usuário determina a quantidade de linhas.
01
01 02
01 02 03
01 02 03 04
01 02 03 04 05
01 02 03 04 05 06
01 02 03 04 05 06 07
01 02 03 04 05 06 07 08
01 02 03 04 05 06 07 08 09
01 02 03 04 05 06 07 08 09 10
01 02 03 04 05 06 07 08 09 10 11

/* Autor: Vinnícius Alves Pereira
*/
package Exercicio44;
import java.util.Scanner;
public class Principal {
    public static void main(String[] args) {
        int linha = 01, coluna = 01, totallinhas;
        System.out.println("Determina a quantidade de linhas:");
        totallinhas = new Scanner(System.in).nextInt();
        while (linha <= totallinhas) {
            while (coluna < linha){    
                System.out.printf(" %02d", coluna);
                coluna = coluna + 01;
            }
            System.out.printf(" %02d\n", coluna);
            linha = linha + 01;
            coluna = 01;
        }
    }
}

45. (responsável: Wanderley ) Desenhe a seguinte seqüência de triângulos. O usuário determina a quantidade de triângulos.
*

*
**

*
**
***

*
**
***
****

*
**
***
****
*****

*
**
***
****
*****
******

*
**
***
****
*****
******
*******
...


46. (responsável: Will ) Desenhe a seguinte pirâmide de asteriscos. O usuário determina a quantidade de linhas.
.......*
.....***
...*****
..*******
.*********
***********
...

package Exercicios;
 
import java.util.Scanner;
 
public class Exercicio46 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int lines, inc;
        System.out.println("Entre com o numero de linhas:");
        lines = new Scanner(System.in).nextInt();
        inc = lines;
        for (int i = 0; i < lines; i++){
            inc--;
            if (i > 0) inc--;
            for (int y = lines - i - 1; y > 0; y--)
                System.out.print(" ");
            for (int x = 0; x < lines - inc; x++)
                 System.out.print("*");
 
            System.out.println("");
        }
 
    }
 
}

47. (responsável: … ) Leia uma data e uma quantidade de dias, em seguida exiba esta data somada pela quantidade de dias fornecida. Exemplo: 29/04/2007 + 3 = 02/05/2007.


48. (responsável: … ) Coloque em ordem crescente uma seqüência de números fornecidos pelo usuário.


49. (responsável: Victor Di Donato ) Coloque em ordem alfabética uma lista de nomes fornecidos pelo usuário.

public class Solução {
 
    public static void main(String[] args) {
    int cont = 0, qtdnomes;
    String nome;
    Vector vetor = new Vector();  
    System.out.println("Entre com a quantidade de nomes:");
    qtdnomes = new Scanner(System.in).nextInt();
    System.out.println("Entre com os nomes:");
 
        while(cont < qtdnomes){
          nome = new Scanner(System.in).next();
          vetor.add(nome);
          cont = cont+1; 
        } 
        Collections.sort(vetor);   
        for(int i = 0 ; i< vetor.size(); i++) {   
        System.out.println(vetor.get(i));   
          }  
 
    }}

50. (responsável: … ) Receba dois retângulos através dos seus quatro vértices. Cada vértice é um ponto e é formado por duas coordenadas x e y. Faça a crítica destes pontos, pois eles não podem se sobrepor. Observe que o usuário pode fornecê-los em qualquer ordem. Em seguida informe se os dois retângulos se interceptam em algum lugar.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License