Sunteți pe pagina 1din 18

Linguagens de Programa

c
ao
Prova Te
orica Unidade I
Carlos Olarte
1 de Abril de 2015

Quest
ao 1
Fa
ca um programa para ler v
arios valores inteiros e imprimir na tela:

1. A m
edia aritm
etica dos n
umeros lidos;

2. A soma dos n
umeros pares;

3. A quantidade de m
ultiplos de 5;

O final da leitura acontecer


a quando for lido
um valor negativo.

Solu
c
ao 1
# include < iostream >
using namespace std ;
int main () {
// inicializar as vari
a veis
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 < < media < < " " << soma_par < < " " << q5 < <
endl ;
return 0;
}

Solu
c
ao 2
# include < iostream >
using namespace std ;
int main () {
// inicializar as vari
a veis
double media =0;
int soma_par =0 , q5 = 0 , n =0 , i =0;
// La
c o 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 < < media < < " " << soma_par < < " " << q5 < <
endl ;
return 0;
}

Nota
1. 1 : include, namespace, main.
2. 1 : declarar e inicializar as vari
aveis.
3. 1.5: La
co while
4. 0.5: test + acumular soma de pares
5. 0.5: test + acumular m
ultiplos de 5.
6. 0.5: acumular media
7. 0.5 calcular media (fora do la
co)
8. 0.5: Imprimir resultados
Nota = 2.6ptos
6

Quest
ao 2
Fa
ca um programa que dados n e dois n
umeros
inteiros positivos i e j diferentes de 0, imprime
em ordem crescente os n primeiros naturais
que s
ao m
ultiplos de i ou de j ou de ambos.
Exemplo: Para n = 6 , i = 2 e j = 3 a sada
dever
a ser : 0, 2, 3, 4, 6, 8.

Solu
c
ao 1
# include < iostream >
using namespace std ;
int main ()
{
int i ,j , n ;
int k =1;
int mult =0;
// ler os dados
cout < < " i : " ; cin > > i ;
cout < < " j : " ; cin > > j ;
cout < < " n : " ; cin > > n ;
// la
c o controlado por k
while (k <= n )
{
if ( mult % i ==0 || mult % j ==0) {
cout < < mult < < endl ;
// contar numero de multiplos
k ++;
}
// incrementar mult
mult ++;
}
return 0;
}

Solu
c
ao 2 (mais eficiente)
# include < iostream >
using namespace std ;
int main ()
{
int i , j , n ;
int multi , multj ;
int k ;
cout < < " i : " ; cin > > i ;
cout < < " j : " ; cin > > j ;
cout < < " n : " ; cin > > 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 < < multi < < endl ;
// proximo multiplo de i
multi += i ;
}

else
{
if ( multi > multj )
{
cout < < multj < < endl ;
// proximo multiplo de j
multj += j ;
}
else // Iguais
{
cout < < multi < < endl ;
// avan
c a multi e multj
multi += i ;
multj += j ;
}
}
}
return 0;
}

Nota

1. 1: Estrutura do programa

2. 1: Controlar n
umero de sadas (k)

3. 2: Teste para imprimir o m


ultiplo

4. 2: Atualizar os valores corretamente.


Nota = 2.6ptos
6

Quest
ao 3
Fa
ca uma fun
c
ao conta digitos que dados um
inteiro n e um inteiro d, 0 d 9, devolve
quantas vezes o dgito d aparece em n. Exemplo: para n = 24342, d = 4, a fun
c
ao deve
retornar 2.

Solu
c
ao
# include < iostream >
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: Prot
otipo (tipo de retorno)

2. 1: Prot
otipo (par
ametros)

3. 1: La
co

4. 1: teste

5. 1: Atualizar os valores

6. 1: retorno da fun
c
ao
Nota = 2.6ptos
6

Quest
ao 4
Fa
ca uma fun
c
ao arctan que recebe um n
umero
real x [0, 1] e devolve uma aproxima
c
ao do
arco tangente de x (em radianos) atrav
es da
s
erie
x3
x5 x7
x9
arctan(x) = x
+

+
....
3
5
7
9
incluindo todos os termos da s
erie at
e

xk

< 0.001
k

Solu
c
ao
float 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 ;
// pr
o ximos valores de k e x ^ k
k +=2;
mult_x *= x * x ;
// Terminar o la
co
} while ( termo >=0.001 || termo <= -0.001)
;
return soma ;
}

Nota

1. 1: Prot
otipo da fun
c
ao

2. 2: Condi
c
ao de parada (valor absoluto)

3. 1: Inicializar as vari
aveis

4. 1: Termos positivos/negativos

5. 1: Valor do pr
oximo termo
Nota = 2.6ptos
6

S-ar putea să vă placă și