ESTRUTURA DE DADOS PROVA 01r – TURMA IX10 INTRODUÇÃO ‐ RECUPERAÇÃO ALUNO: DATA: 20/04/2011 1. O fragmento de programa abaixo encontra um número inteiro que mais se aproxima da raiz quadrada de um número fornecido pelo usuário [2,5 pontos]: write ('Digite um número: '); readln (n); r := 0; repeat r := r + 1; until ((r * r) > n); r := r - 1; writeln ('O número inteiro aproximado da raiz quadrada de ', n, ' é ', r); Por exemplo: se o usuário informar n = 4, o resultado é r = 2, pois o inteiro mais próximo da raiz de 4 é 2; se informar n = 15, o resultado é r = 3. Reescreva o fragmento utilizando: a) o comando FOR b) o comando WHILE DICA: Para cada versão, faça o teste de mesa para verificar se o resultado está correto. 2. Para as expressões aritméticas abaixo faça [2,5 pontos]: I. II. a) b) c) d) e) Transforme a expressão em uma instrução de programa Pascal; Calcule o resultado levando em consideração que os valores de X, Y e Z são, respectivamente, 1, 2 e 5; 2 * Y mod 3 – X abs(-2 * Z) div 4 ((20 div 3) div 3) + (2 ^ 4)/2 (30 mod 4 * (3 ^ 3)) * -1 (-Y ^ 2) + (Z * 10)/Y Instrução Resultado a) b) c) d) e) 1 ESTRUTURA DE DADOS PROVA 01r – TURMA IX10 INTRODUÇÃO ‐ RECUPERAÇÃO 3. Faça um programa que calcule o tempo que os atletas levaram para concluir uma maratona [5,0 pontos]. Você deverá ler os dados de vários atletas, usando o código 999 para encerrar as leituras. Para cada atleta, será fornecido como entrada o número do atleta, o horário inicial (partida) e o horário final (chegada). O horário inicial e final é fornecido como um número inteiro no formato HHMMSS, onde: HH = hora MM = minutos SS = segundos Para cada atleta lido, gere como saída um relatório conforme modelo abaixo: ATLETA: 001 INÍCIO: 10:15:30 FIM : 11:45:20 TEMPO : 01:29:50 DICA: para calcular o tempo total: - converta o horário inicial e final em segundos (SS+(MM*60)+(HH*3600)); - subtraia o horário inicial do horário final; - converta o total de segundos restantes em HH, MM e SS. Exemplo: INICIO: 10:15:30 => 36.930s FIM...: 11:45:20 => 42.320s TEMPO.: FIM – INICIO => 5.390s HH = TEMPO div 3600 = 1 MM = (TEMPO – (HH * 3600)) div 60 = 29 SS = (TEMPO – (HH * 3600) – (MM * 60)) = 50 BOA PROVA! 2