Skip to content

Latest commit

 

History

History
247 lines (191 loc) · 11.4 KB

README.md

File metadata and controls

247 lines (191 loc) · 11.4 KB

Lista 6

Etec de Guaianazes

Nome: ____________________________________ ______ Turma: 1ª⊠ 2ª 3ª Série - Informática

Professora: Aline Mendonça Data: 08/11/2019

AVALIAÇÃO DE LÓGICA DE PROGRAMAÇÃO – ESTUDOS DE CASO

Critérios de Avaliação:

Raciocínio lógico, Aplicação de Princípios, Organização, Conhecimento

Observações: Atividade individual, com consulta ao material impresso do próprio aluno.

Estudos de caso – Vetores

Criar os programas em Java dos problemas abaixo relacionados. Apresentar os códigos funcionando em 03/12/2019 no repositório do GitHub (Individual)

1) Criar um vetor A com 10 inteiros. Calcular e apresentar um vetor B onde cada elemento de B será a raiz quadrada do respectivo elemento de A;

2) Criar um vetor A com 10 inteiros. Calcular e apresentar quais e quantos elementos de A são números primos;

3) Criar um vetor A com 10 inteiros. Calcular e apresentar um vetor B, onde B terá os mesmos elementos de A em ordem inversa. Ou seja, o 1º elemento de B será o ultimo de A, o segundo elemento de B será o penúltimo de A e assim sucessivamente.

4) Ler um vetor A de 10 inteiros. Apresentar o maior valor e o menor valor lido.

5) Ler um vetor A de 10 inteiros. Apresentar o vetor B que será A em ordem crescente. Apresentar um vetor C que será A em ordem decrescente.

Lista 6 Parte 2

Estudos de caso – Vetores


Lista complementar de Lógica de Programação e Técnicas de Programação e Algoritmos Treinando para trabalhar com vetores.

1) Ler um vetor A com 20 elementos. Separar os elementos pares e ímpares de A utilizando apenas um vetor extra B. Sugestão: no início do vetor B armazene os elementos pares de A e nas posições restantes do vetor B armazene os elementos de A que são ímpares.

2) Criar um vetor A com 5 elementos inteiros. Escreva um programa que imprima a tabuada de cada um dos elementos do vetor A.

3) Criar um vetor A com 10 elementos inteiros. Escreva um programa que imprima cada elemento do vetor A e uma mensagem indicando se o respectivo elemento é um número primo ou não.

4) Criar um vetor A com 10 elementos inteiros. Escreva um programa que imprima cada elemento do vetor A e a relação de todos os pares de 0 até o respectivo elemento.

5) Criar um vetor A com 10 elementos inteiros. Escreva um programa que imprima cada elemento do vetor A e a relação de todos os divisores do respectivo elemento.

6) Criar um vetor A com 11 elementos, indexados de 0 até 10. Sendo que cada elemento do vetor A é formado pela potência de base 2 elevado ao expoente igual a posição do respectivo elemento, ou seja: A[i] = 2i.

7) Criar um vetor A com 15 elementos inteiros. Construir um vetor B de mesmo tamanho, sendo que cada elemento do vetor B seja o fatorial do elemento correspondente em A.

8) Ler um vetor A com 10 elementos. Construir um vetor B de mesmo tipo e tamanho, sendo que cada elemento de B deverá ser o seguinte somatório: Bi = Somatório de Aj, para todo j variando de i até 10.

9) Criar dois vetores A e B cada um com 10 elementos inteiros. Desenvolver um programa que realize a intersecção dos vetores A e B para produzir um vetor C. Interseção de conjuntos = todos os elementos que existem em A e também existem em B.

10) Criar dois vetores A e B cada um com 10 elementos inteiros. Desenvolver um programa que crie um vetor C que é a diferença dos conjuntos formados pelos elementos dos vetores A e B. Diferença de conjuntos = todos os elementos do conjunto A que não existem no conjunto B.

11) Ler 10 elementos inteiros em um vetor A. Montar uma rotina de busca, para pesquisar se um dado elemento X está armazenado em A.

12) Números palíndromos são aqueles que escritos da direita para a esquerda têm o mesmo valor quando escritos da esquerda para a direita. Exemplo: 545; 789987; 97379; 123454321; etc. Escreva um programa que verifique se um dado vetor A de 10 elementos inteiros é um palíndromo, ou seja, se o primeiro elemento do vetor e igual ao último, se o segundo elemento do vetor é igual ao penúltimo e assim por diante até verificar todos os elementos ou chegar a conclusão que o vetor não é um palíndromo.

13) Criar um vetor A com 10 elementos inteiros. Construir um vetor B de mesmo tipo e tamanho, obedecendo as seguintes regras de formação: a) Bi deverá receber 1 quando Ai for par; b) Bi deverá receber 0 quando Ai for ímpar.

14) Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um vetor C de mesmo tipo e tamanho, obedecendo as seguintes regras de formação: a) Ci deverá receber 1quando Ai for maior que Bi; b) Ci deverá receber 0 quando Ai for igual a Bi; c) Ci deverá receber -1 quando Ai for menor que Bi.

15) Ler um vetor A com dez elementos inteiros. Criar um vetor B que tenha os 10 elementos de A em ordem crescente e um vetor C que tenha os 10 elementos de A em ordem descrescente.

Resoluções lista 6

Resolução do exercício 1

Precisaremos de dois vetores, o primeiro pode ser um vetor do tipo Inteiro que irá servir para armazenar os números digitados pelo usuário e outro do tipo Double para pegarmos a raiz quadrada do primeiro vetor (O segundo vetor tem que ser double, pois, caso a raiz quadrada não for inteira ela irá ser irracional. Ex: √2 = 1.41421356237...).


int a[] = new int[10];
double b[] = new double[10];

Importarei a Classe Scanner para pegarmos os dados do teclado
e também importarei a classe math para podermos utilizar o metódo sqrt();. É ele que vai pegar o número e retornar a Raiz Quadrada desse número.

import java.util.Scanner;
import java.math.*;

agora irei Instanciar o objeto da Classe Scanner

Scanner in = new Scanner(System.in);

and it's now! Vai começar nossa Lógica de Programação.


Vamos Utilizar um laço for para pegar os dados digitados pelo usuário.

for(int i = 0 ; i <= a.length - 1 ; i++) {}

Esse laço for vai começar com i = 0;, e esse 'i' vai até o tamanho do nosso vetor (que no caso é 10). Porém, tem que ser o tamanho do nosso vetor menos 1, já que que um vetor de tamanho 10 vai 0 até 9 (i <= a.length - 1;). E a cada volta do laço ele vai incrementar de 1 em 1 (i++;).

for(i=0; i<= a.length - 1; i++) {
   System.out.println("Digite o "+(i+1)+" número: ");
   a[i] = in.nextInt();
   b[i] = a[i];
   b[i] = Math.sqrt(b[i]);
}

Primeiro iremos fazer um System.out.println pedindo para o usuário digitar o i-néssino número (Lembre-se que o i começa valendo 0, logo "(i+1)°" irá aparecer na tela como ).
Salvaremos o número que o usuário digitar no vetor 'a' na posição 'i' (a[i] = in.nextInt();). Colocaremos o valor de a[i] em b[i] (b[i] = a[i];) e com b[i] = Math.sqrt(b[i]); , colocaremos a Raiz quadrada de b[i] nele mesmo. E pronto! é só apresentar b[i] para o usuário.


Só falta dar o System.out.println do resultado na tela.
E para isso, precisaremos apenas fazer o seguinte código:

for(i = 0; i <= a.length - 1; i++) {
     System.out.println("A raiz quadrada de " + a[i] + " = "  +b[i]);
}
e voilà!


Meu código completo desse exercício
Talvez esteja um pouquinho diferente mas a lógica prevalece :)


Resolução do exercício 2


Primeiramente, iremos pegar os 10 números digitados do usuário com o laço for.

for(i=0;i<=a.length-1;i++){
            System.out.println("Digite "+(i+1)+"° número: ");
            a[i] = in.nextInt();
}


Continuando dentro desse for, iremos utilizar da seguinte lógica:
Iremos declarar um vetor TotalPrimos[i] = 0;. Depois, criaremos outro for(for(c=1;c<=a[i];c++){}), e dentro desse for que acabamos de criar, verificaremos se o numero 'a' na posição 'i' (a[i]) dividido pelo contador, deixa resto zero (if(a[i]%c==0)). Se isso for verdade, TotalPrimos[i]++;.

for( c=1;c<=a[i];c++){
   if(a[i] % c == 0){
      TotalPrimos[i]++;
   }  
}

Vamos, supor que seja a primeira interação do programa com usuário, e no vetor a[0] ele digite 3 (a[0] = 3). Então, TotalPrimos[0] = 0; e depois vem o 2° laço for (for(c=1;1<=3;c++){}). Logo após, ele vai verificar se 3 / 1 deixa resto 0 (if(3%1==0){}). como isso é true, TotalPrimos[0] = 1;. Após isso, o algoritmo vai voltar para o laço com c=2 e irá verificar se 3 / 2 deixa resto 0 (if(3%2==0){}). Isso é false, então o algoritmo não irá fazer nada. E por último, voltará novamente ao laço com c=3 e novamente irá verificar se 3 / 3 deixa resto 0 (if(3%3==0){}). Sendo isso true novamente, o TotalPrimos[0] = 2;. Já que a definição de um número primo é:

um número que só pode deixar resto 0 por 1 e por ele mesmo

Iremos verificar depois se esse número deixa o total de 2 restos, ou seja, TotalPrimos[0] == 2; (no caso, pelo que você viu na explicação anterior, 3 é um número primo, pois, só foi divido por 2 números, 1 e ele mesmo).

for(i=0;i<=a.length-1;i++){
   System.out.println("Digite "+(i+1)+"° número: ");
   a[i] = in.nextInt();
   TotalPrimos[i] = 0;
   for(c=1;c<=a[i];c++){
       if(a[i]%c==0){
          TotalPrimos[i]++;
       }
   }
}

Declararei uma variável do tipo inteiro começando com 0, para guardar quantos números primos foram digitados.

int QuantidadePrimos=0;

Iremos verificar cada posição do TotalPrimos[i];, para ver se esse elemento é igual ou não a 2. Caso seja, vamos printar na tela que esse elemento é um número primo e incrementaremos mais um em QuantidadePrimos (QuantidadePrimos++;). Caso não seja primo, printaremos que tal número não é primo.

for (i=0;i<=a.length-1;i++) {
    if (TotalPrimos[i] == 2) {
       System.out.println(a[i]+" é primo");
       QuantidadePrimos++;
     } else {
       System.out.println(a[i]+" não é primo");
     }
}

O último passo e o não menos importante, é o de mostrar para o usuário quantos primos tem no total.

System.out.print("A quantidade de números primos é: "+QuantidadePrimos);

Meu código completo desse exercício