Baixe o app para aproveitar ainda mais
Prévia do material em texto
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, "\nSintaxe:\n%s <letra>\n", argv[0]); return 1; } n = 0; while((c = getchar())!= -1) { if( c == argv[1][0]) n++; } printf("\nA letra %c apareceu %d vezes\n", 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("\nA diferença entre "); 21. escrevehora(&t1); 22. printf(" e "); 23. escrevehora(&t2); 24. printf(" é de %d segundos\n", 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("%02d:%02d:%02d", 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. }
Compartilhar