Prova P2 Stemmer
2 pág.

Prova P2 Stemmer


DisciplinaProjeto e Planejamento de Experimentos para Eletrônica4 materiais26 seguidores
Pré-visualização1 página
Projeto e Planejamento de Experimentos para Eletrônica 
Prova P1: 13/06/2012 
Nome: 
 
1. Escreva um programa em linguagem C chamado paralelo.c com a seguinte especificação: 
1. (1,5 ponto) O programa deve ter uma função em linguagem C com o seguinte protótipo: 
double paralelo(double r1, double r2); 
Esta função deve retornar o valor da associação em paralelo de dois resistores cujo valor é dado nos parâmetros. 
Esta associação em paralelo é calculada como sendo o inverso da soma dos inversos das resistências. Esta 
função deve funcionar também se R1 ou R2 for zero, gerando a resposta correta que é zero. 
2. /* Solucao */ 
3. double paralelo(double r1, double r2) 
4. { 
5. return (r1*r2/(r1+r2)); 
6. } 
7. (1.5 ponto) O programa principal deve solicitar do usuário os valores dos resistores R1 e R2, usar a função 
paralelo para calcular o resistor equivalente e escrever uma mensagem informado este resultado. 
8. /* Solucao */ 
9. int main() 
10. { 
11. double r1, r2, req; 
12. printf("\nR1 = "); scanf("%lf\n", &r1); 
13. printf("\nR2 = "); scanf("%lf\n", &r2); 
14. req = paralelo(r1, r2); 
15. printf("R1 || R2 = %lf\n", req); 
16. return 0; 
17. } 
2. (2 pontos)Escreva um programa chamado contaletra que recebe a letra na linha de comando: 
contaletra <letra> 
Neste caso a letra procurada é o primeiro caractere da segunda palavra da linha de comando. Se a letra não for informada 
na linha de comando, o programa deve terminar com uma mensagem esclarecendo qual é a sintaxe esperada. 
O programa deve receber dados da entrada padrão (o stream stdin). A cada caractere recebido, o programa deve 
verificar este caractere se é igual a letra procurada, incrementando um contador toda a vez que isto acontece. No final o 
programa deve escrever na saída padrão uma mensagem informando quantas vezes a letra procurada foi encontrada. 
/* Solucao */ 
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
int n, c; 
if(argc < 2) { 
 fprintf(stderr, &quot;\nSintaxe:\n%s <letra>\n&quot;, argv[0]); 
 return 1; 
 } 
n = 0; 
while((c = getchar())!= -1) { 
 if( c == argv[1][0]) n++; 
 } 
printf(&quot;\nA letra %c apareceu %d vezes\n&quot;, argv[1][0], n); 
return 0; 
} 
(1 ponto) Escreva uma linha de comando que use o programa contaletra para decobrir quantas vezes a letra 'e' aparece no 
arquivo contaletra.c 
/* Solucao */ 
contaletra e < contaletra.c 
3. Considere o seguinte programa: 
4. #include <stdio.h> 
5. 
6. struct tempo { 
7. int hora; 
8. int minuto; 
9. int segundo; 
10. }; 
11. 
12. void escrevehora(struct tempo *pt); 
13. int diftempo(struct tempo *pt2, struct tempo *pt1); 
14. 
15. int main() 
16. { 
17. struct tempo t1, t2; 
18. t1.hora = 12; t1.minuto = 8; t1.segundo = 40; 
19. t2.hora = 16; t2.minuto = 28; t2.segundo = 10; 
20. printf(&quot;\nA diferença entre &quot;); 
21. escrevehora(&t1); 
22. printf(&quot; e &quot;); 
23. escrevehora(&t2); 
24. printf(&quot; é de %d segundos\n&quot;, diftempo(&t2,&t1)); 
25. return 0; 
26. } 
1. (2 pontos) Escreva a subrotina escrevehora que falta neste programa. Esta subrotina deve escrever o horario 
representado pela estrutura struct tempo no formato hh:mm:ss (dois digitos para hora, minuto e segundo 
separado por ':'). 
27. /* Solucao */ 
28. void escrevehora(struct tempo *pt) 
29. { 
30. printf(&quot;%02d:%02d:%02d&quot;, pt->hora, pt->minuto, pt->segundo); 
31. } 
1. (2 pontos) Escreva a função diftempo que falta neste programa. Esta função retorna o número de segundos 
correspondente a diferença de tempo entre dois horários definidos pela estrutura struct tempo. Observe que 
cada hora tem 60 minutos e que cada minuto tem 60 segundos. Se o resultado der negativo some 86400 
segundos para torna-lo positivo. 
2. /* Solucao */ 
3. int diftempo(struct tempo *pt2, struct tempo *pt1) 
4. { 
5. int dif; 
6. dif = (pt2->hora * 60 + pt2->minuto)*60 + pt2->segundo; 
7. dif -= (pt1->hora * 60 + pt1->minuto)*60 + pt1->segundo; 
8. if(dif < 0) dif += 86400; 
9. return dif; 
10. }