Vous êtes sur la page 1sur 4

Universidade Federal dos Vales do Jequitinhonha e Mucuri

Instituto de Cincia e Tecnologia


Algoritmos e Programao
Prof: Alexandre Ramos Fonseca

Trabalho Prtico 1
Valor: 10 pontos
Observaes:
O trabalho pode ser executado em grupo de no mximo 5 alunos. No caso de um grupo ficar muito pequeno podero
ser formados grupos com 6 alunos.
permitido discutir os problemas e estratgias de soluo com seus colegas
Quando se tratar de escrever ou implementar as solues, isto deve ser feito apenas com o componente do seu grupo.
Se utilizar qualquer fonte externa para implementar suas respostas, voc deve citar estas fontes: artigos ou livros,
amigos ou colegas, informao que voc encontrou na Internet qualquer coisa em qualquer lugar!
melhor tentar solucionar os problemas voc mesmo, pois solucionar problemas um componente fundamental
neste curso. No vamos penaliz-lo se voc utilizar uma ajuda externa, desde que devidamente citada, e desde que esta
ajuda no seja a cpia do trabalho de um colega.
Utilizar o trabalho dos outros, como se fosse seu, plgio ==> desonestidade acadmica ser punida com severidade.
Dvidas devem ser enviadas preferencialmente para o frum de dvidas no moodle, de modo a serem compartilhadas
com seus colegas. Quando tiver uma dvida, no envie cpia completa do seu trabalho. Ao invs disto, tente isolar
uma parcela do cdigo com problema e a envie;
A entrega dos trabalhos ser feita pelo moodle. Anexe 1 nico arquivo .zip (ou .rar ou .7z ou .tar.gz) contendo as suas
respostas. O Arquivo .zip deve conter as questes organizadas por pastas, contendo, cada uma, a soluo
implementada para uma questo. Dentro do arquivo .zip deve haver um arquivo .txt com os nomes completos dos
integrantes do grupo.
A data limite de entrega est definida no moodle.
Trabalhos entregues com atraso tero descontos progressivos: 25% para o primeiro dia e 50% para o segundo dia.
Trabalhos com mais de dois dias de atraso no sero corrigidos (100% de desconto).

O que deve ser entregue:

Cdigo fonte do programa em C++ (bem identado e comentado).


Documentao do trabalho. Entre outras coisas, a documentao deve conter:
1. Introduo: descrio do problema a ser resolvido e viso geral sobre o funcionamento do
programa.
2. Implementao: descrio sobre a implementao do programa. Deve ser detalhada a
estrutura de dados utilizada (de preferncia com diagramas ilustrativos), o funcionamento
das principais funes e procedimentos utilizados, o formato de entrada e sada de dados,
bem como decises tomadas relativas aos casos e detalhes de especificao que porventura
estejam omissos no enunciado.
3. Concluso: comentrios gerais sobre o trabalho e as principais dificuldades encontradas em
sua implementao.
4. Bibliografia: bibliografia utilizada para o desenvolvimento do trabalho, incluindo sites da
Internet se for o caso.
Questes:

Questo 1: A partir da frmula matemtica para calcular o seno:

i
sen( x)=
(1) 2 i+1
x
i=0
( 2i +1)!

crie a funo seno que calcula o valor do seno para o ngulo x dado em radianos:

double meusin (double x)


{
//seu cdigo aqui
}

No programa principal chame a sua funo dentro de um loop e reproduza a sada da tabela:

ngulo em graus ngulo em radianos sin(x) meusin(x) erro


0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000
10.000000000000000 0.174532925199433 0.173648177666930 0.173648177666930 0.000000000000000
20.000000000000000 0.349065850398866 0.342020143325669 0.342020143325669 0.000000000000000
30.000000000000000 0.523598775598299 0.500000000000000 0.500000000000000 0.000000000000000
40.000000000000000 0.698131700797732 0.642787609686539 0.642787609686539 0.000000000000000
50.000000000000000 0.872664625997165 0.766044443118978 0.766044443118978 -0.000000000000000
60.000000000000000 1.047197551196598 0.866025403784439 0.866025403784432 -0.000000000000006
70.000000000000000 1.221730476396031 0.939692620785908 0.939692620785824 -0.000000000000084
80.000000000000000 1.396263401595464 0.984807753012208 0.984807753011393 -0.000000000000815
90.000000000000000 1.570796326794897 1.000000000000000 0.999999999993977 -0.000000000006023
100.000000000000000 1.745329251994330 0.984807753012208 0.984807752976151 -0.000000000036057
110.000000000000000 1.919862177193763 0.939692620785908 0.939692620603998 -0.000000000181911
120.000000000000000 2.094395102393195 0.866025403784439 0.866025402987582 -0.000000000796856
130.000000000000000 2.268928027592628 0.766044443118978 0.766044440018867 -0.000000003100111
140.000000000000000 2.443460952792061 0.642787609686539 0.642787598785120 -0.000000010901419
150.000000000000000 2.617993877991494 0.500000000000000 0.499999964864253 -0.000000035135747
160.000000000000000 2.792526803190927 0.342020143325669 0.342020038358287 -0.000000104967382
170.000000000000000 2.967059728390360 0.173648177666930 0.173647884314884 -0.000000293352046
180.000000000000000 3.141592653589793 0.000000000000000 -0.000000772785890 -0.000000772785890
190.000000000000000 3.316125578789226 -0.173648177666930 -0.173650108895744 -0.000001931228814
200.000000000000000 3.490658503988659 -0.342020143325669 -0.342024746480747 -0.000004603155078
210.000000000000000 3.665191429188092 -0.500000000000000 -0.500010512949703 -0.000010512949703
220.000000000000000 3.839724354387525 -0.642787609686539 -0.642810706990464 -0.000023097303925
230.000000000000000 4.014257279586958 -0.766044443118978 -0.766093427411768 -0.000048984292790
240.000000000000000 4.188790204786391 -0.866025403784438 -0.866125983866482 -0.000100580082043
250.000000000000000 4.363323129985823 -0.939692620785908 -0.939893099458941 -0.000200478673033
260.000000000000000 4.537856055185257 -0.984807753012208 -0.985196558700375 -0.000388805688167
270.000000000000000 4.712388980384690 -1.000000000000000 -1.000735188111485 -0.000735188111485
280.000000000000000 4.886921905584122 -0.984807753012208 -0.986165633589930 -0.001357880577722
290.000000000000000 5.061454830783555 -0.939692620785909 -0.942146391598176 -0.002453770812268
300.000000000000000 5.235987755982989 -0.866025403784439 -0.870370060436547 -0.004344656652108
310.000000000000000 5.410520681182422 -0.766044443118978 -0.773591938145763 -0.007547495026784
320.000000000000000 5.585053606381854 -0.642787609686540 -0.655667083249199 -0.012879473562660
330.000000000000000 5.759586531581287 -0.500000000000000 -0.521613005660773 -0.021613005660773
340.000000000000000 5.934119456780721 -0.342020143325669 -0.377721565153049 -0.035701421827380
350.000000000000000 6.108652381980153 -0.173648177666931 -0.231751800033196 -0.058103622366265
360.000000000000000 6.283185307179586 -0.000000000000000 -0.093245759062072 -0.093245759062072

A primeira coluna da tabela o ngulo em graus, a segunda coluna o valor do ngulo convertido para radianos.
As colunas seguintes mostram os valores do seno do ngulo calculados pela funo sin() da biblioteca math.h e
pela funo desenvolvida por voc. A ltima coluna deve mostrar o erro cometido por sua aproximao.
Questo 2: Pesquise sobre as funes da biblioteca math.h:

double acos(double);
double asin(double);
double cos(double);
double cosh(double);
double exp(double);
double log(double);
double log10(double);
double pow(double, double);
double sinh(double);
double sqrt(double);
double tan(double);
double tanh(double);

Quais funes matemticas so implementadas por essas funes? Descubra as frmulas matemticas para
calcular essas funes e crie as suas verses:

double meuacos(double);
double meuasin(double);
double meucos(double);
double meucosh(double);
double meuexp(double);
double meulog(double);
double meulog10(double);
double meupow(double, double);
double meusinh(double);
double meusqrt(double);
double meutan(double);
double meutanh(double);

Para cada funo implementada por voc, refaa os testes da questo 1 comparando os seus resultados com os
resultados da funo definida pela biblioteca math.h.

Questo 3: Crie os arquivos meumath.h, meumath.cpp e main.cpp.

O arquivo main.cpp dever ficar parecido com isso:

...
#include <math.h>
#include "meumath.h"
...

int main()
{
//seus testes aqui

return 0;
}
O arquivo meumath.h dever conter os prottipos (cabealhos) das suas funes. Lembre-se de colocar
a diretiva #ifndef:

#ifndef MEUMATH_H
#define MEUMATH_H

double meuacos(double);
double meuasin(double);
double meucos(double);
double meucosh(double);
double meuexp(double);
double meulog(double);
double meulog10(double);
double meupow(double, double);
double meusin(double);
double meusinh(double);
double meusqrt(double);
double meutan(double);
double meutanh(double);

#endif

No arquivo meumath.cpp onde a implementao das suas funes dever ficar:

#include "meumath.h"

double meuacos(double x)
{
//seu cdigo aqui.
}

double meuasin(double x)
{
//seu cdigo aqui.
}

...