8h Universidade Federal do ABC Avaliação: Prova 02 Disciplina: Processamento da Informação Turmas: A4, A5 (8hs) Professor: Jesús P. Mena-Chalco Data: 05/05/2016 Nome: RA: Instruções para a prova (leia antes de começar): 1) A prova tem a duração de 1h50min. 2) A prova é individual e sem consultas. 3) Pontuação total: 40 pontos + bônus de 4 pontos. Questão 1 (6 pontos, 3 pontos cada) Escreva o intervalo de números aleatórios que a seguinte instrução permitirá gerar: (int)(math.random()*100)%5 + 1 Escreva o valor da variável d, após a execução das seguintes instruções: int i, d=0; for (i=10; i>=0; i=i d) { d = i d; Questão 2 (8 pontos, 4 pontos cada) Para cada método indique o valor ou o conteúdo da variável x. static int f1 ( int x ) { if (x<0) { return 1*x; return x; int x; int v[] = {1,2,3, 4, 5, 6; x = enigmaa1(v) ; static int f2 ( int x, int y ) { return f1(x)+f1(y); static int enigmaa1 ( int v[] ) { int i, soma=0; for(i=0; i<v.length; i=i+2) { soma = soma + f2(v[i], v[i+1]); return soma; static double enigmab1 ( int n ) { int i; double resposta = 0; for (i=0; i<n; i=i+1) { resposta = 1.0/((i+1)*(i+1)); return 1+resposta; double x; x = enigmab1(100);
8h Questão 3 (8 pontos) Indique o valor que devolverá o seguinte método. Considere como parâmetro de entrada, para o método, o seu número de matricula (isto é, seu RA composto de 8 dígitos). static int funcaora ( int ra ) { int i=0, m1, m2; int v[] = new int[8]; while (ra>0) { v[i] = (ra%10)+i; ra = ra/10; i = i+1; if (v[0]>v[1]) { m1 = v[0]; m2 = v[1]; else { m2 = v[0]; m1 = v[1]; for (i=2; i<8; i=i+2) { if (v[i]>v[i+1]) { if (v[i]>m1) { m1 = v[i]; if (v[i+1]<m2) { m2 = v[i+1]; else { if (v[i]<m2) { m2 = v[i]; if (v[i+1]>m1) { m1 = v[i+1]; return m1 m2; RA = v = m1 = m2 = Resposta:...
8h Questão 4 (6 pontos) O seguinte método promete, dado um nome completo, devolver o primeiro nome. Suponha que o nome dado como entrada está bem formatado, por exemplo "Joao Carlos Costa da Silva". O algoritmo está correto? Justifique. Se não estiver correto, apresente a correção da(s) linha(s) incorreta(s). 1. static String primeironome ( String nome ) { 2. int i; 3. String resposta = ""; 4. for (i=0; i<nome.length() && nome.charat(i)!=' '; i=i+1) { 5. resposta = nome.charat(i) + resposta; 6. 7. return resposta; 8.
8h Questão 5 (4 pontos) Faça um método que imprima os elementos de uma matriz quadrada, de números inteiros, seguindo a ordem da somatória de seus índices, isto é, seguindo a diagonal secundária. Tente construir um programa o mais eficiente possível. Tente percorrer a matriz apenas uma única vez. Limitação: Use no máximo 2 laços (pode usar várias condicionais). Assinatura: static void imprimirelementos ( int M[][] ) Exemplo: Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16
8h Questão 6 (8 pontos) Faça um método que imprima os elementos pares da diagonal principal e secundaria. Assuma que a matriz, de números inteiros, dada como entrada sempre será quadrada. Limitação: Use no máximo 1 laço (pode usar várias condicionais). Assinatura: static void imprimirparesdiagonais ( int M[][] ) Exemplo: Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 16 4 10
8h Questão BÔNUS (4 pontos) Considere o seguinte método recursivo: 1. static boolean frec ( int v[], int i ) { 2. if (i==v.length 1) { 3. return true; 4. 5. else { 6. if (v[i]>v[i+1]) { 7. return false; 8. 9. else { 10. return frec(v, i+1); 11. 12. 13. Observação: O valor inicial da variável i é zero (0). Exemplo de chamado: int v[] = {1,2,3,4,5,6,7,8; boolean r = frec(v, 0); (a) Indique em português, de forma concisa, o que realiza o método. (b) Indique o número máximo de, dado um vetor qualquer, a linha 6 ser executada. (c) O algoritmo é eficiente? Justifique.
14h Universidade Federal do ABC Avaliação: Prova 02 Disciplina: Processamento da Informação Turmas: C1, C2, C3 (14hs) Professor: Jesús P. Mena-Chalco Data: 05/05/2016 Nome: RA: Instruções para a prova (leia antes de começar): 1) A prova tem a duração de 1h50min. 2) A prova é individual e sem consultas. 3) Pontuação total: 40 pontos + bônus de 4 pontos. Questão 1 (6 pontos, 3 pontos cada) Escreva o intervalo de números aleatórios que a seguinte instrução permitirá gerar: (int)(math.random()*100)%6 + 1 Escreva o valor da variável d, após a execução das seguintes instruções: int i, d=0; for (i=20; i>=0; i=i d) { d = i d; Questão 2 (8 pontos, 4 pontos cada) Para cada método indique o valor ou o conteúdo da variável x. static int f1 ( int x ) { if (x<0) { return 1*x; return x; int x; int v[] = {1,2,3, 4, 5, 6; x = enigmaa2(v) ; static int f2 ( int x, int y ) { return f1(x)+f1(y); static int enigmaa2 ( int v[] ) { int i, soma=0; for(i=v.length; i>0; i=i 2) { soma = soma + f2(v[i 1], v[i 2]); return soma; static double enigmab2 ( int n ) { int i; double resposta = 0; for (i=1; i<=n; i=i+1) { resposta = (1.0/i)*(1.0/i); return 1+resposta; double x; x = enigmab2(100);
14h Questão 3 (8 pontos) Indique o valor que devolverá o seguinte método. Considere como parâmetro de entrada, para o método, o seu número de matricula (isto é, seu RA composto de 8 dígitos). static int funcaora ( int ra ) { int i=0, m1, m2; int v[] = new int[8]; while (ra>0) { v[i] = (ra%10)+i; ra = ra/10; i = i+1; if (v[0]>v[1]) { m1 = v[0]; m2 = v[1]; else { m2 = v[0]; m1 = v[1]; for (i=2; i<8; i=i+2) { if (v[i]>v[i+1]) { if (v[i]>m1) { m1 = v[i]; if (v[i+1]<m2) { m2 = v[i+1]; else { if (v[i]<m2) { m2 = v[i]; if (v[i+1]>m1) { m1 = v[i+1]; return m1 m2; RA = v = m1 = m2 = Resposta:...
14h Questão 4 (6 pontos) O seguinte método promete, dado um nome completo, devolver o último nome. Suponha que o nome dado como entrada está bem formatado, por exemplo "Joao Carlos Costa da Silva". O algoritmo está correto? Justifique. Se não estiver correto, apresente a correção da(s) linha(s) incorreta(s). 1. static String ultimonome ( String nome ) { 2. int i; 3. String resposta = ""; 4. for (i=nome.length() 1; i>=0 && nome.charat(i)!=' '; i=i 1) { 5. resposta = resposta + nome.charat(i); 6. 7. return resposta; 8.
14h Questão 5 (4 pontos) Faça um método que imprima os elementos de uma matriz quadrada, de números inteiros, seguindo a ordem da somatória de seus índices, isto é, seguindo a diagonal secundária. Tente construir um programa o mais eficiente possível. Tente percorrer a matriz apenas uma única vez. Limitação: Use no máximo 2 laços (pode usar várias condicionais). Assinatura: static void imprimirelementos ( int M[][] ) Exemplo: Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16
14h Questão 6 (8 pontos) Faça um método que imprima os elementos ímpares da diagonal principal e secundaria. Assuma que a matriz, de números inteiros, dada como entrada sempre será quadrada. Limitação: Use no máximo 1 laço (pode usar várias condicionais). Assinatura: static void imprimirimparesdiagonais ( int M[][] ) Exemplo: Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 11 7 13
14h Questão BÔNUS (4 pontos) Considere o seguinte método recursivo: 1. static boolean frec ( int v[], int i ) { 2. if (i==v.length 1) { 3. return true; 4. 5. else { 6. if (v[i]>=v[i+1]) { 7. return false; 8. 9. else { 10. return frec(v, i+1); 11. 12. 13. Observação: O valor inicial da variável i é zero (0). Exemplo de chamado: int v[] = {11,11,22,22,33,44,55,66; boolean r = frec(v, 0); (a) Indique em português, de forma concisa, o que realiza o método. (b) Indique o número máximo de, dado um vetor qualquer, a linha 6 ser executada. (c) O algoritmo é eficiente? Justifique.
19h Universidade Federal do ABC Avaliação: Prova 02 Disciplina: Processamento da Informação Turmas: A4, A5 (19hs) Professor: Jesús P. Mena-Chalco Data: 05/05/2016 Nome: RA: Instruções para a prova (leia antes de começar): 1) A prova tem a duração de 1h50min. 2) A prova é individual e sem consultas. 3) Pontuação total: 40 pontos + bônus de 4 pontos. Questão 1 (6 pontos, 3 pontos cada) Escreva o intervalo de números aleatórios que a seguinte instrução permitirá gerar: (int)(math.random()*100)%7 + 1 Escreva o valor da variável d, após a execução das seguintes instruções: int i, d=0; for (i=40; i>=0; i=i d) { d = i d; Questão 2 (8 pontos, 4 pontos cada) Para cada método indique o valor ou o conteúdo da variável x. static int f1 ( int x ) { if (x<0) { return 1*x; return x; int x; int v[] = {1,2,3, 4, 5, 6; x = enigmaa3(v) ; static int f2 ( int x, int y ) { return f1(x)+f1(y); static int enigmaa3 ( int v[] ) { int i, soma=0; for(i=v.length 1; i>0; i=i 2) { soma = soma + f2(v[i], v[i 1]); return soma; static double enigmab3 ( int n ) { int i; double resposta = 0; for (i=1; i<=n; i=i+2) { resposta = (1.0/i)*(1.0/i); return 1+resposta; double x; x = enigmab3(100);
19h Questão 3 (8 pontos) Indique o valor que devolverá o seguinte método. Considere como parâmetro de entrada, para o método, o seu número de matricula (isto é, seu RA composto de 8 dígitos). static int funcaora ( int ra ) { int i=0, m1, m2; int v[] = new int[8]; while (ra>0) { v[i] = (ra%10)+i; ra = ra/10; i = i+1; if (v[0]>v[1]) { m1 = v[0]; m2 = v[1]; else { m2 = v[0]; m1 = v[1]; for (i=2; i<8; i=i+2) { if (v[i]>v[i+1]) { if (v[i]>m1) { m1 = v[i]; if (v[i+1]<m2) { m2 = v[i+1]; else { if (v[i]<m2) { m2 = v[i]; if (v[i+1]>m1) { m1 = v[i+1]; return m1 m2; RA = v = m1 = m2 = Resposta:...
19h Questão 4 (6 pontos) O seguinte método promete, dado um nome completo, devolver o último nome. Suponha que o nome dado como entrada está bem formatado, por exemplo "Joao Carlos Costa da Silva". O algoritmo está correto? Justifique. Se não estiver correto, apresente a correção da(s) linha(s) incorreta(s). 1. static String ultimonomepessoa ( String nome ) { 2. int i; 3. String resposta = ""; 4. for (i=nome.length() 1; i>=0 && nome.charat(i)!=' '; i=i+1) { 5. resposta = resposta + nome.charat(i); 6. 7. return resposta; 8.
19h Questão 5 (4 pontos) Faça um método que imprima os elementos de uma matriz quadrada, de números inteiros, seguindo a ordem da somatória de seus índices, isto é, seguindo a diagonal secundária. Tente construir um programa o mais eficiente possível. Tente percorrer a matriz apenas uma única vez. Limitação: Use no máximo 2 laços (pode usar várias condicionais). Assinatura: static void imprimirelementos ( int M[][] ) Exemplo: Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 5 3 6 9 4 7 10 13 8 11 14 12 15 16
19h Questão 6 (8 pontos) Faça um método que imprima os elementos múltiplos de 3 da diagonal principal e secundaria. Assuma que a matriz, de números inteiros, dada como entrada sempre será quadrada. Limitação: Use no máximo 1 laço (pode usar várias condicionais). Assinatura: static void imprimirmult3diagonais ( int M[][] ) Exemplo: Entrada Saída Entrada Saída 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 9 30 3 5 12 15 30 10 40 9 12 3 12 30
19h Questão BÔNUS (4 pontos) Considere o seguinte método recursivo: 1. static boolean frec ( int v[], int i ) { 2. if (i==v.length 1) { 3. return true; 4. 5. else { 6. if (v[i]>=v[i+1]) { 7. return false; 8. 9. else { 10. return frec(v, i+1); 11. 12. 13. Observação: O valor inicial da variável i é zero (0). Exemplo de chamado: int v[] = {11,11,22,22,33,44,55,66; boolean r = frec(v, 0); (a) Indique em português, de forma concisa, o que realiza o método. (b) Indique o número máximo de, dado um vetor qualquer, a linha 6 ser executada. (c) O algoritmo é eficiente? Justifique.