ALGORITMO E PROGRAMAÇÃO Profº Ricardo Ariel Correa Rabelo Lista III – Estruturas de Controle: Repetição 1. Faça um algoritmo para escrever os números entre 1 e 1000 public class Questao_01 { /** * Faça um algoritmo para escrever os números entre 1 e 1000 */ public static void main(String[] args) { for (int i = 2; i < 1000; i++) { Write.writeln(i); } } } 2. Faça um algoritmo para escrever os números pares entre 1 e 1000 public class Questao_02 { /** * Faça um algoritmo para escrever os números pares entre 1 e 1000 */ public static void main(String[] args) { int num = 1; while (num<1000){ if (num % 2 ==0) { Write.writeln(num); } num++; } } } 3. Faça um algoritmo para escrever os números divisíveis por 7 entre 1 e 1000 public class Questao_03 { /** * Faça um algoritmo para escrever os números divisíveis * por 7 entre 1 e 1000 */ public static void main(String[] args) { int num = 1; while (num<1000){ if (num % 7 == 0) { Write.writeln(num); } num++; } } } 4. Faça um algoritmo para ler dois números inteiros representando um intervalo e escrever em ordem crescente todos os números ímpares do intervalo. public class Questao_04 { /** * Faça um algoritmo para ler dois números inteiros * representando um intervalo e escrever em ordem * crescente todos os números ímpares do intervalo. */ public static void main(String[] args) { int num1 = Read.readInt("Informe o 1° valor: "); int num2 = Read.readInt("Informe o 2° valor: "); while(num1 < num2){ num1++; if (num1 % 2 != 0) { Write.writeln(num1); } } while(num2 < num1){ num2++; if (num2 % 2 != 0) { Write.writeln(num2); } } } } 5. Faça um algoritmo para ler dois números inteiros representando um intervalo e escrever em ordem crescente todos os números divisíveis por 3 do intervalo. Atentar para que o intervalo não tenha seu final menor que 3. public class Questao_05 { public static void main(String[] args) { int num1 = Read.readInt("Informe o 1° valor: "); int num2 = Read.readInt("Informe o 2° valor: "); while(num1 < num2){ num1++; if (num1 % 3 == 0) { Write.writeln(num1); } } while(num2 < num1){ num2++; if (num2 % 3 == 0) { Write.writeln(num2); } } } } 6. Faça um algoritmo para ler 100 números inteiros e escrever a soma e a média dos números lidos. public class Questao_06 { public static void main(String[] args) { int soma = 0; int media; for (int i = 0; i < 100; i++) { int num = Read.readInt("Informe o n°: "); soma = soma + num; media = soma/(i+1); Write.writeln("Total: " + soma); Write.writeln("Média: " + media); } } } 7. Faça um algoritmo para ler um valor N e em seguida ler N números inteiros e escrever o maior número lido. public class Questao_07 { /** * Faça um algoritmo para ler um valor N e em seguida ler * N números inteiros e escrever o maior número lido. */ public static void main(String[] args) { int num = Read.readInt("Informe a Qtd de numeros lidos: "); int maior = 0; for (int i = 0; i < num; i++) { int n = Read.readInt("Informe o n°: "); if (n > maior) { maior = n; } } Write.write("o valor maior é: " + maior); } } 8. Faça um algoritmo para ler números inteiros, onde o Flag será o valor 0 e sem seguida escrever o menor valor lido e quantas vezes este ocorreu nos números lidos. public class Questao_08 { public static void main(String[] args) { int num = Read.readInt("Informe o n°: "); int menor = num; int cont = 0; while(num != 0){ if (num < menor) { menor = num; cont = 1; }else{ if (num == menor) { cont++; } } num = Read.readInt("Informe o n°: "); } Write.writeln("Valor menor: " + menor); Write.write("Qtd de vezes: " + cont); } } 9. Faça uma algoritmo para ler salários, onde o Flag será um Salário igual a 0 e escreva quais os três maiores valores dos salários lidos. public class Questao_09 { /** * Faça uma algoritmo para ler salários, onde o Flag será um Salário * igual a 0 e escreva quais os três maiores valores dos salários lidos. */ public static void main(String[] args) { double salario = Read.readDouble("Informe o salário: "); double salario1 = 0; double salario2 = 0; double salario3 = 0; while(salario != 0){ if (salario > salario1) { salario3 = salario2; salario2 = salario1; salario1 = salario; }else{ if ((salario < salario1) && (salario>salario2)) { salario3 = salario2; salario2 = salario; }else{ if ((salario<salario2) && (salario>salario3)) { salario3 = salario; } } } salario = Read.readDouble("Informe o salário: "); } Write.write(" Salario 1: "+ salario1); Write.write(" Salario 2: "+ salario2); Write.writeln(" Salario 3: "+ salario3); } } 10. Faça um algoritmo para ler o nome, sexo ("M" =Masculino e "F"=Feminino), três notas e o número de faltas dos alunos de uma turma, onde o Flag será um nome igual a "fim" e escrever: a. A média e a situação final de cada aluno; b. A média das notas dos homens e a média das notas das mulheres; c. O percentual de homem e o percentual de mulheres reprovados; d. O percentual geral de reprovação da turma. public class Questao_10 { public static void main(String[] args) { String nome = ""; char sexo; double nota1; double nota2; double nota3; double media; double mediaM = 0; double mediaM2 = 0; double mediaF2 = 0; double mediaF = 0; double porcM = 0; double porcF = 0; double porcR = 0; int faltas; int contM = 0; int contF = 0; int contPorcM = 0; int contPorcF = 0; nome = Read.readString("Digite o nome: "); while (!nome.equalsIgnoreCase("fim")) { sexo = Read.readChar("Digite o Sexo: "); nota1 = Read.readDouble("1ª Nota: "); nota2 = Read.readDouble("2ª Nota: "); nota3 = Read.readDouble("3ª Nota: "); media = (nota1 + nota2 + nota3)/3; faltas = Read.readInt("Quantidade de faltas: "); if ((media>=5) && (faltas<=27)){ Write.writeln(nome +", Sexo: " + sexo +", Média: " + media + ", "+ faltas + " faltas" + ", Aprovado(a)"); }else{ Write.writeln(nome +", Sexo: " + sexo +", Média: " + media + ", "+ faltas + " faltas" + ", Reprovado(a)"); } if (sexo=='M'|| sexo=='m'){ contM = contM +1; mediaM = (mediaM + media); } if (sexo =='F'|| sexo=='f'){ contF = contF +1; mediaF = (mediaF + media); } if ( (sexo == 'M' || sexo == 'm') && (media<5 || faltas>27)){ contPorcM = contPorcM + 1; porcM = (contPorcM*100)/contM; } if ((sexo == 'F' || sexo == 'f') && (media<5 || faltas>27)){ contPorcF = contPorcF + 1; porcF = (contPorcF*100)/contF; } if ((media<5) || (faltas>27)){ porcR = ((contPorcM + contPorcF)*100)/(contM + contF); } mediaM2 = (mediaM/contM); mediaF2 = (mediaF/contF); nome = Read.readString("Digite o nome: "); } System.out.println("Média das notas dos homens: "+ mediaM2); System.out.println("Média das notas das mulheres: "+ mediaF2); System.out.println("Percentual de Homens Reprovados: " + porcM); System.out.println("Percentual de Mulheres Reprovados: " + porcF); System.out.println("Percentual Geral de Reprovação da Turma: " + porcR); } } 11. Faça um algoritmo para ler um número inteiro positivo e escrever o seu fatorial. public class Questao_11 { /** * Faça um algoritmo para ler um número inteiro positivo e * escrever o seu fatorial. */ public static void main(String[] args) { double b = 2; for (double a = Read.readDouble("Informe o fatorial: ");a>0 && a >= b; a++) { if (a%b==0 && a>=b) { a = a/b; Write.writeln(a); }else{ if (a%b!=0) { b = b + 1; } } } } } 12. Faça um algoritmo para ler um número inteiro positivo e informar se este número é primo ou não. public class Questao_12 { /** * Faça um algoritmo para ler um número inteiro positivo * e informar se este número é primo ou não. */ public static void main(String[] args) { int qtde = 0; int num = Read.readInt("Digite um número: "); for (int i = 1; i <= num ; i++) { if(num % i == 0) { qtde = qtde + 1; } } if(qtde == 2){ Write.writeln(num + " é primo."); }else{ Write.writeln(num + " não é primo."); } } } 13. Faça um algoritmo para ler um valor inteiro N e escrever os N primeiros números primos. public class Questao_13 { public static void main(String[] args) { int qtde = 0; int cont = 0; int num = Read.readInt("Digite um número: "); /** Repete num vezes */ while (cont <= num) { qtde = 0; /** Testa de 0 até num */ for (int i = 1; i <= cont; i++) { if (cont % i == 0) { qtde = qtde + 1; } } if (qtde == 2) { Write.writeln("O número " + cont + " é primo."); } cont++; } } } 14. Faça um algoritmo para ler um número inteiro e gerar outro número inteiro formado pelos dígitos invertidos do número lido. Ex: NúmeroLido = 12345; NúmeroGerado = 54321. Dica: Observe os resultados das funções Quociente e Resto de um número por 10. public class Questao_14 { public static void main(String[] args) { int num = Read.readInt("Informe um n° positivo: "); //int div = num; int resto = num%10; while (num/10!=0) { num = (num/10); resto = ((resto*10) + (num%10)); } Write.write("Invertido: "+resto); } } 15. Faça um algoritmo para ler o código, descrição, estoque mínimo e estoque das mercadorias de um supermercado, onde o Flag será um código igual a 0. Escreva o código e a descrição das mercadorias como estoque abaixo do mínimo. public class Questao_15 { public static void main(String[] args) { int cod = 1; String desc = ""; int estoque = 0; int estoqueMin = 300; cod = Read.readInt("Código: "); while (cod!=0){ desc = Read.readString("Descrição: "); estoque = Read.readInt("Estoque: "); if (estoque<estoqueMin){ Write.writeln("Código: "+cod+", Descrição: "+desc+", Estoque Atual: "+estoque+", Abaixo do mínino"); }else{ Write.writeln("Código: "+cod+", Descrição: "+desc+", Estoque Atual: "+estoque+", OK."); } cod = Read.readInt("Código: "); } } } 16. Faça um algoritmo para apurar o resultado do segundo turno da eleição para prefeito de uma cidade. O algoritmo deverá ler o nome dos dois candidatos, em seguida todas as zonas (flag zona = 0), onde o Flag será o valor 0 e para cada zona todas as suas secções (flag secção = 0) e para cada secção serão lidos os nomes de cada candidato e seu número de votos. O algoritmo deverá escrever o nome e o percentual de votos de cada candidato. public class Questao_16 { public static void main(String[] args) { int num = 0; @SuppressWarnings("unused") String cand = ""; int zona = 1; int secao = 1; int cand1 = 0; int cand2 = 0; int porc1 = 0; int porc2 = 0; zona = Read.readInt("Nº da zona: "); while (zona !=0) { secao = Read.readInt("Nº da seção: "); while (secao != 0) { num = Read.readInt("VOTO: 12 p/ João ou 13 p/ Pedro"); if (num==12){ cand1++; cand = "JOÃO"; } if (num==13){ cand2++; cand = "PEDRO"; } if (num!=12 && num!=13){ cand = "VOTO NULO"; } Write.writeln("PRÓXIMO VOTO!!!"); porc1 = cand1*100/(cand1 + cand2); porc2 = cand2*100/(cand1 + cand2); secao = Read.readInt("Nº da seção: "); } zona = Read.readInt("Nº da zona: "); } Write.writeln("---------------- Resultado Final --------------------"); Write.writeln("Candidato João nº12: "+cand1+ " votos, "+porc1+"%"); Write.writeln("Candidato Pedro nº13: "+cand2+ " votos, "+porc2+"%"); } }