Buscar

Prova Final INF 100

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Página	
  1	
  de	
  8	
  	
  
UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE INFORMÁTICA INF	
  100	
  –	
  Introdução	
  à	
  Programação	
  I	
   SEMESTRE	
  II	
  /	
  2014	
  	
  
Prova Final 16/12/2014 13:00 – 14:50h 	
  	
  Matrícula:__________________	
   Nome:___________________________________________________________________	
  	
   Marque	
  com	
  um	
  X	
  sua	
  turma	
  TEÓRICA:	
  
	
   Turma	
   Dia	
  da	
  Semana	
   Horário	
   Professor	
  	
   1	
   quinta-­‐feira	
   10:00	
   Mauro	
  	
   2	
   sexta-­‐feira	
   10:00	
   Levi	
  	
   3	
   sexta-­‐feira	
   08:00	
   Guilherme	
  	
   4	
   sexta-­‐feira	
   14:00	
   Allan	
  	
   5	
   quinta-­‐feira	
   14:00	
   Allan	
  	
  OBSERVAÇÕES:	
  
• As	
  questões	
  podem	
  ser	
  resolvidas	
  a	
  lápis.	
  
• Use	
   o	
   verso	
   das	
   páginas	
   dos	
   enunciados	
   para	
   resolver	
   as	
   questões	
   somente	
   quando	
  indicado.	
  
• Entende-­‐se	
   por	
   algoritmo	
   refinado	
   completo	
   um	
   algoritmo	
   contendo	
   a	
   declaração	
  completa	
  das	
  variáveis	
  e	
  a	
  representação	
  do	
  código	
  em	
  português,	
  de	
  forma	
  clara,	
  não	
  ambígua,	
   de	
   modo	
   que	
   cada	
   instrução	
   do	
   algoritmo	
   possa	
   ser	
   traduzida	
   em	
   uma	
  instrução	
  da	
  linguagem	
  de	
  programação.	
  
• Ao	
   escrever	
   um	
   programa	
   em	
   C++,	
   não	
   é	
   necessário	
   fornecer	
   as	
   linhas	
   iniciais	
   de	
  comentário	
   e	
   comandos	
   “#include”	
   e	
   “using	
   namespace”.	
   Pode	
   escrever	
   somente	
   o	
  “corpo”	
  do	
  programa:	
  	
  	
   int main() 
 { 
 ... 
 }	
  A	
   tabela	
   abaixo	
   apresenta	
   a	
   ordem	
   de	
   prioridade	
   dos	
   operadores	
   C++	
   mais	
   comuns.	
   Essa	
  informação	
  pode	
  ser	
  útil	
  para	
  você	
  na	
  resolução	
  das	
  questões	
  da	
  prova.	
  
Prioridade	
   Operador(es)	
   Exemplo	
  1	
   ++ -- (pós) i++ 2	
   ! ++ -- (pré) - (unário) ++i 3	
   * / % x / y 4	
   + - x - y 5	
   < <= > >= x < y 6	
   == != x == y 7	
   && (and, E lógico) 8	
   || (or, OU lógico) 9	
   = += -= etc. x = 2 	
  
	
   	
  
Página	
  2	
  de	
  8	
  	
  
Questão	
  1	
   (20	
  pontos)	
  	
  Sabe-­‐se	
  que,	
  no	
  círculo	
  trigonométrico	
  da	
  matemática,	
  180°	
  correspondem	
  a	
  π	
  radianos,	
  onde	
  
π	
  vale	
  aproximadamente	
  3.1415926535897.	
  	
  Escreva	
  uma	
  função	
  em	
  C++	
  que	
  faça	
  a	
  conversão	
  de	
  um	
  ângulo	
  em	
  graus	
  para	
  radianos.	
  Ou	
  seja,	
   ela	
   deve	
   receber	
   como	
   parâmetro	
   um	
   valor	
   real	
   indicando	
   um	
   ângulo	
   em	
   graus	
   e	
  retornar	
   o	
   ângulo	
   correspondente	
   em	
   radianos.	
   Em	
   seguida,	
   mostre	
   um	
   exemplo	
   de	
   como	
  essa	
  função	
  criada	
  poderia	
  ser	
  usada	
  dentro	
  da	
  função	
  main().	
  	
  Use	
  o	
  espaço	
  abaixo	
  para	
  resolver	
  esse	
  problema.	
  	
  	
  	
   	
  
Página	
  3	
  de	
  8	
  	
  
Questão	
  2	
   (30	
  pontos)	
  Dizemos	
   que	
   uma	
   matriz	
   quadrada	
   é	
   triangular	
   inferior	
  se	
   todos	
   os	
   valores	
   acima	
   da	
  diagonal	
  principal	
  forem	
  iguais	
  a	
  zero.	
  Escreva	
  um	
  algoritmo	
  refinado	
  completo	
  ou	
  um	
  programa	
  em	
  C++	
  que:	
  1. Leia	
  um	
  valor	
  inteiro	
  n;	
  2. Leia	
  uma	
  matriz	
  A	
  de	
  tamanho	
  n	
  x	
  n;	
  3. Verifica	
  se	
  a	
  matriz	
  A	
  é	
  uma	
  matriz	
  triangular	
  inferior.	
  Se	
  for,	
  escreva	
  a	
  mensagem	
  “matriz	
  triangular	
  inferior”.	
  Caso	
  contrário,	
  escreva	
  “matriz	
  não	
  triangular	
  inferior”	
  Considere	
  que	
  n	
  nunca	
  será	
  maior	
  que	
  100	
  (o	
  programa	
  não	
  precisa	
  verificar	
  esse	
   limite	
  na	
  leitura	
  de	
  n).	
  Seguem	
  dois	
  exemplos	
  de	
  funcionamento	
  do	
  programa:	
  
 
Entre com a dimensão da matriz (1..100): 4 
Entre com os valores da matriz: 
 0 0 0 0 
-2 -6 0 0 
 9 0 -7 0 
10 1 -2 4 
matriz triangular inferior 
 
Entre com a dimensão da matriz (1..100): 3 
Entre com os valores da matriz: 
1 2 3 
0 0 0 
3 2 1 
matriz não triangular inferior 
 Use	
  o	
  espaço	
  abaixo	
  e/ou	
  o	
  verso	
  desta	
  folha	
  para	
  resolver	
  esse	
  problema.	
  	
   	
  
Página	
  4	
  de	
  8	
  	
  
	
  
	
   	
  
Página	
  5	
  de	
  8	
  	
  
Questão	
  3	
   (30	
  pontos)	
  	
  Deseja-­‐se	
  escrever	
  um	
  programa	
  em	
  C++	
  que	
  leia	
  dois	
  vetores	
  A	
  e	
  B,	
  e	
  em	
  seguida	
  escreva	
  na	
  tela	
  os	
  elementos	
  representando	
  a	
  união	
  entre	
  A	
  e	
  B.	
  	
  No	
  resultado	
  da	
  união	
  não	
  pode	
  haver	
  elementos	
  repetidos.	
  O	
  programa	
  deverá	
  se	
  comportar	
  como	
  o	
  exemplo	
  abaixo:	
  
 
na = 6 
Digite os valores de A: 5 2 3 2 4 1 
nb = 5 
Digite os valores de B: 8 2 4 10 2 
 
C = A união B = 5 2 3 4 1 8 10 
 
Uma parte do programa já está pronto. Você deve completa-lo, preenchendo somente o código 
correspondente à função uniao(): 
 
#include <iostream> 
using namespace std; 
 
// Essa função preenche o vetor C com a união entre os arranjos A e B. 
// na = quantidade de elementos em A. nb = idem para B. 
// A função retorna o número de elementos copiados para o arranjo C. 
int uniao( int a[], int na, int b[], int nb, int c[] ) { 
 
 
} 
 
int main() { 
 int a[100], b[100], c[200], na, nb, nc; 
 
 cout << "na = "; 
 cin >> na; 
 cout << "Digite os valores de A: "; 
 for (int i=0; i < na; i++) 
 cin >> a[i]; 
 cout << "nb = "; 
 cin >> nb; 
 cout << "Digite os valores de B: "; 
 for (int i=0; i < nb; i++) 
 cin >> b[i]; 
 
 nc = uniao( a, na, b, nb, c ); 
 cout << "\nC = A união B = "; 
 for (int i=0; i < nc; i++) 
 cout << c[i] << " "; 
 
 return 0; 
} 
 Use	
  o	
  verso	
  desta	
  folha	
  para	
  resolver	
  esse	
  problema.	
  	
   	
  
Página	
  6	
  de	
  8	
  	
  
	
  	
   	
  
Página	
  7	
  de	
  8	
  	
  
Questão	
  4	
   (20	
  pontos)	
  O	
  programa	
  a	
  seguir	
  não	
  contém	
  erros	
  de	
  compilação.	
  Ele	
  realiza	
  10	
  saídas	
  em	
  tela.	
  Para	
  cada	
  uma	
  delas,	
  informe	
  o	
  valor	
  inteiro	
  que	
  será	
  exibido.	
  	
  
#include <iostream> 
using namespace std; 
 
int w = 100; 
 
void troca( int a, int &b ) { 
 int aux = a; 
 w = 10; 
 a = b; 
 b = aux; 
 cout << "Saida 02: " << a << endl; 
 cout << "Saida 03: " << b << endl; 
} 
 
int maior( int a, int b ) { 
 if (a < b) 
 return b; 
 else return a; 
} 
 
int quad( int &z ) { 
 z = 2*z; 
 int x = 2*z; 
 return x; 
} 
 
int main() { 
 int x = 5, y = 7, a = 3; 
 cout << "Saida 01: " << w << endl; 
 
 troca( x, y ); 
 
 x = 2*y; 
 cout << "Saida 04: " << x << endl; 
 cout << "Saida 05: " << y << endl; 
 
 y = maior( x, y ); 
 cout << "Saida 06: " << y << endl; 
 cout << "Saida 07: " << a << endl; 
 
 y = quad( x ); 
 cout << "Saida 08: " << x << endl; 
 cout << "Saida 09: " << y << endl; 
 cout << "Saida 10: " << w << endl; 
 
 return 0; 
} 	
  Preenchaa	
  tabela	
  abaixo	
  com	
  os	
  números	
  inteiros	
  exibidos	
  em	
  cada	
  saída	
  de	
  tela:	
  Saída	
  01:	
   Saída	
  02:	
   Saída	
  03:	
   Saída	
  04:	
   Saída	
  05:	
  Saída	
  06:	
   Saída	
  07:	
   Saída	
  08:	
   Saída	
  09:	
   Saída	
  10:	
  	
  
Página	
  8	
  de	
  8	
  	
  
RASCUNHO

Outros materiais