gabarito_prova_1 (2)
-
Upload
anderson-costa -
Category
Documents
-
view
213 -
download
1
description
Transcript of gabarito_prova_1 (2)
-
Linguagens de Programacao
Prova Teorica Unidade I
Carlos Olarte
1 de Abril de 2015
-
Questao 1
Faca um programa para ler varios valores in-
teiros e imprimir na tela:
1. A media aritmetica dos numeros lidos;
2. A soma dos numeros pares;
3. A quantidade de multiplos de 5;
O final da leitura acontecera quando for lido
um valor negativo.
-
Solucao 1#include
using namespace std;
int main(){
// inicializar as variaveis
double media =0;
int soma_par=0, q5 = 0,n=0,i=0;
//ler dado
cin >>n;
while(n>=0){
// acumular soma
media += n;
// incrementar numero de dados
i++;
// testar se n e par.
if(n%2 ==0)
soma_par += n;
// Testar se n e multiplo de 5
if(n%5==0)
q5++;
//ler dado
cin >>n;
}
// calcular media
media = media/i;
-
// imprimir resultados
cout
-
Solucao 2#include
using namespace std;
int main(){
// inicializar as variaveis
double media =0;
int soma_par=0, q5 = 0,n=0,i=0;
//Laco enquanto n>=0
do{
//ler dado
cin >>n;
if(n>=0){
// acumular soma
media += n;
// incrementar numero de dados
i++;
// testar se n e par.
if(n%2 ==0)
soma_par += n;
// Testar se n e multiplo de 5
if(n%5==0)
q5++;
}
} while(n>=0);
// calcular media
-
media = media/i;
// imprimir resultados
cout
-
Nota
1. 1 : include, namespace, main.
2. 1 : declarar e inicializar as variaveis.
3. 1.5: Laco while
4. 0.5: test + acumular soma de pares
5. 0.5: test + acumular multiplos de 5.
6. 0.5: acumular media
7. 0.5 calcular media (fora do laco)
8. 0.5: Imprimir resultados
Nota = 2.6ptos6
-
Questao 2
Faca um programa que dados n e dois numeros
inteiros positivos i e j diferentes de 0, imprime
em ordem crescente os n primeiros naturais
que sao multiplos de i ou de j ou de ambos.
Exemplo: Para n = 6 , i = 2 e j = 3 a sada
devera ser : 0,2,3,4,6,8.
-
Solucao 1#include
using namespace std;
int main()
{
int i,j,n;
int k=1;
int mult =0;
// ler os dados
cout i;
cout j;
cout n;
// laco controlado por k
while (k
-
Solucao 2 (mais eficiente)#include
using namespace std;
int main()
{
int i, j, n;
int multi , multj;
int k;
cout i;
cout j;
cout n;
// Primeiros multiplos de i e j
multi = 0;
multj = 0;
for (k = 0; k < n; k++)
{
// comparar multi e multj
if (multi < multj)
{
cout
-
else
{
if (multi > multj)
{
cout
-
Nota
1. 1: Estrutura do programa
2. 1: Controlar numero de sadas (k)
3. 2: Teste para imprimir o multiplo
4. 2: Atualizar os valores corretamente.
Nota = 2.6ptos6
-
Questao 3
Faca uma funcao conta digitos que dados um
inteiro n e um inteiro d, 0 d 9, devolvequantas vezes o dgito d aparece em n. Exem-
plo: para n = 24342, d = 4, a funcao deve
retornar 2.
-
Solucao#include
using namespace std;
int contadigitos(int n, int d) {
int conta , resto;
conta = 0;
while (n != 0) {
resto = n % 10;
// novo valor de n
n = n/10;
// Testar e incrementar
if (resto == d)
conta ++;
}
return conta;
}
-
Nota
1. 1: Prototipo (tipo de retorno)
2. 1: Prototipo (parametros)
3. 1: Laco
4. 1: teste
5. 1: Atualizar os valores
6. 1: retorno da funcao
Nota = 2.6ptos6
-
Questao 4
Faca uma funcao arctan que recebe um numero
real x [0,1] e devolve uma aproximacao doarco tangente de x (em radianos) atraves da
serie
arctan(x) = x x3
3+x5
5 x
7
7+x9
9 ....
incluindo todos os termos da serie atexkk < 0.001
-
Solucaofloat arctan(float x) {
float soma =0;
float termo=x;
int k=1;
float mult_x = x;
do{
// Calcular o termo
termo = mult_x/k;
// determinar positivo/negativo
if(i%2!=0)
termo *= -1.0;
// Acumular termo
soma += termo;
// proximos valores de k e x^k
k+=2;
mult_x *= x * x;
// Terminar o laco
}while(termo >=0.001 || termo
-
Nota
1. 1: Prototipo da funcao
2. 2: Condicao de parada (valor absoluto)
3. 1: Inicializar as variaveis
4. 1: Termos positivos/negativos
5. 1: Valor do proximo termo
Nota = 2.6ptos6