Baixe o app para aproveitar ainda mais
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
Compartilhar