1 Fundamentos de Programação - 2014.2 - Prova 3 Fundamentos de Programação - Prova 3 Prof. Marco Polo 04 de dezembro de 2014 Inı́cio: 14:00 - duração: 2:00 horas Questão 01: Equação do 2o grau Escreva um programa em C que resolva a equação ax2 + bx + c = 0, através dos seguintes passos: (a) (2,0 pontos) Crie uma função chamada de Delta, que recebe como parâmetros três números reais, k, p e q, e retorna o valor real p2 − 4kq. (b) (c) (d) (e) A seguir, o programa deve (0,5 pontos) Ler três números reais, a, b e c. (1,0 pontos) Calcular o valor de ∆ da equação através da função Delta. (0,5 pontos) Calcular as soluções das equações. (1,0 pontos) Imprimir na tela o resultado. O programa deve mostrar na tela as soluções reais, se a equação possuir, ou então deve informar “A equaç~ ao n~ ao possui raiz real”, se for o caso. Questão 02: Tabela de funções Escreva um programa em C que crie ou leia uma tabela de duas colunas, que representam x e f (x) para uma dada função. Deve haver um menu para ler ou criar a tabela, e outro menu para a escolha da função, que pode ser apenas f (x) = cos x, f (x) = ex ou f (x) = x2 . Dessa forma, proceda da seguinte maneira: (a) (0,5 pontos) O programa deve conter um menu funcional com as opções abaixo, no qual o usuário deve digitar 1 para criar uma tabela e 2 para ler uma tabela. 1 - Criar arquivo com tabela de funç~ ao 2 - Ler arquivo com tabela de dados (b) (0,5 pontos) Se o usuário escolher a opção 1, deve aparecer um submenu para a escolha da função, da seguinte forma (onde o usuário deve digitar a, b ou c): a - cos(x) b - exp(x) c - x*x (c) (2,0 pontos) Uma vez escolhida a opção do submenu, o programa deve criar um arquivo, de nome “tabela.txt”, que conterá uma tabela com duas colunas de números. A coluna esquerda deve conter os valores de x, variando de 0 a 10, com passo de 0,1. A coluna da direita deve conter os respectivos valores de f (x). (d) (2,0 pontos) Se o usuário escolher a opção 2, o programa deve ler um arquivo chamado “dados.txt”, que contém uma tabela como a do item (c) (Suponha que o arquivo “dados.txt” existe e está na mesma pasta do programa). Em seguida, o programa deve mostrar na tela os dados contidos nesse arquivo. Campus Ji-Paraná Departamento de Fı́sica – UNIR 2 Fundamentos de Programação - 2014.2 - Prova 3 Questão 01 1 2 3 # include < stdio .h > # include < math .h > 4 5 6 7 8 9 float Delta ( float k , float p , float q ) { float d = p * p - 4* k * q ; return d ; } 10 11 12 main () { float a , b , c , x1 , x2 , x , d ; 13 14 printf ( " Este programa resolve a equacao ax ^2 + bx + c = 0. Digite os coeficientes :\ n \ n " ) ; 15 16 printf ( " a = " ) ; scanf ( " % f " , & a ) ; printf ( " b = " ) ; scanf ( " % f " , & b ) ; printf ( " c = " ) ; scanf ( " % f " , & c ) ; 17 18 19 20 d = Delta (a , b , c ) ; 21 22 printf ( " \ n " ) ; 23 24 if (d >0) { 25 26 x1 = -b /(2* a ) + sqrt ( d ) /(2* a ) ; x2 = -b /(2* a ) - sqrt ( d ) /(2* a ) ; printf ( " x1 = %f , x2 = % f " , x1 , x2 ) ; 27 28 29 } 30 31 if ( d ==0) { x = -b /(2* a ) ; printf ( " x = % f " , x ) ; } 32 33 34 35 36 37 if (d <0) 38 printf ( " Nao existe raiz real " ) ; 39 40 } Campus Ji-Paraná Departamento de Fı́sica – UNIR 3 Fundamentos de Programação - 2014.2 - Prova 3 Questão 02 1 2 # include < stdio .h > # include < math .h > 3 4 5 main () { FILE * arquivo1 , * arquivo2 ; char arq [30] , op1 , op2 , ch ; int k ; float x , y ; 6 7 8 9 10 printf ( " Tabelas de funç~ o es \ n \ n " ) ; printf ( " 1 - Criar arquivo com tabela de funcoes \ n " ) ; printf ( " 2 - Ler arquivo com tabela de dados \ n " ) ; printf ( " \ n " ) ; scanf ( " % s " , & op1 ) ; 11 12 13 14 15 16 if ( op1 == ’1 ’) { arquivo1 = fopen ( " tabela . txt " , " w " ) ; 17 18 19 20 printf ( " \ n " ) ; printf ( " Escolha a funcao desejada :\ n \ n " ) ; printf ( " a - cos ( x ) \ n " ) ; printf ( " b - exp ( x ) \ n " ) ; printf ( " c - x ^2\ n " ) ; printf ( " \ n " ) ; scanf ( " % s " , & op2 ) ; 21 22 23 24 25 26 27 28 for ( k =0; k <=100; k ++) { x = 0.1* k ; if ( op2 == ’a ’) y = cos ( x ) ; if ( op2 == ’b ’) y = exp ( x ) ; if ( op2 == ’c ’) y = x * x ; 29 30 31 32 33 34 35 fprintf ( arquivo1 , " % f % f \ n " , x , y ) ; 36 } fclose ( arquivo1 ) ; 37 38 } 39 40 if ( op1 == ’2 ’) { arquivo2 = fopen ( " dados . txt " , " r " ) ; while (! feof ( arquivo2 ) ) { ch = getc ( arquivo2 ) ; printf ( " % c " , ch ) ; } fclose ( arquivo2 ) ; } 41 42 43 44 45 46 47 48 49 50 51 } Campus Ji-Paraná Departamento de Fı́sica – UNIR