Ir para conteúdo
Fórum Script Brasil

Thiago_91

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre Thiago_91

Thiago_91's Achievements

0

Reputação

  1. Olá galera, me chamo Thiago, sou morador do Rio de Janeiro, e faço engenharia no IME(Instituto Militar de Engenharia). No presente momento estou no primeiro ano da faculdade e tive o primeiro contato com programação através da linguagem C, que é ensinada na cadeira de Introdução à Computação, nunca tinha tido nenhuma experiência com programação antes. Estou gostando bastante de aprender sobre o assunto e é por isso que resolvi entrar aqui no fórum, espero aprender bastante com vocês aqui. Abraços
  2. Obrigado pelo esclarecimento gente, agora deu certo. Tenho outras dúvidas relacionadas, acredito que seja melhor postar aqui mesmo para não criar outro tópico. Essa função para converter graus em radianos eu usei no seguinte problema: Fazer um programa em C que permita calcular o cosseno de um ângulo (em radianos) baseado na seguinte série: cos(x) = x^0 – x^2/2! + x^4/4! – x^6/6! ... Este programa deve atender às seguintes condicionantes: a) x será lido pelo teclado e deverá ser informado em graus; B) criar uma função que receba o x em graus e o devolva em radianos; c) o calculo do fatorial deve ser feito por uma função criada para este fim; d) a série acima deve ter uma quantidade de termos de tal forma que o valor acumulado em cos(x) difira de menos que 1.0 E-12 do valor devolvido pela função embutida “cos(x)” do C (ou seja, quando a diferença entre o valor acumulado da série e o valor da função “cos” do C for menor que 1.0 E-12, a série deve parar). Irei postar o código do meu programa aqui abaixo, mas só esclarecendo, criei 4 funções, que são as seguintes: 1-mod-calcula o módulo de um número 2-fat-calcula o fatorial de um número 3-angulo-converte um angulo de graus para radianos 4-pot-eleva uma numero real a um expoente inteiro não negativo #include <stdio.h> #include <stdlib.h> #include <math.h> int fat(int num) {int i,prod; prod=1; for(i=1;i<=num;i++) prod*=i; return prod;} double angulo(double ang) {double i; i=ang*3.141592/180; return i;} double pot(double num,int exp) {int i; double res; res=num; if(exp==0) res=1; else for(i=1;i<exp;i++) res*=num; return res;} double mod(double x) {double a; if(x<0) a=-x; else a=x; return a;} int main() { int i,sinal=-1; double x,xrad,cosx=1; printf("Este programa calcula o cosseno de um angulo, digite o angulo em graus \n"); scanf("%lf",&x); xrad=angulo(x); double j=cos(xrad); printf("o angulo em radianos e %lf e seu cosseno e %lf \n",xrad,j);/*aqui eu imprimo o cosseno calculado pela função da biblioteca math.h para depois poder comparar com o calculado para o programa e ver se o programa funcionou corretamente*/ for(i=2;mod(j-cosx)>1.0E-12;i+=2,sinal=-sinal) {cosx=cosx + sinal*pot(xrad,i)/fat(i); printf("%lf \n",mod(j-cosx));/*estou imprimindo este termo apenas para verificar a convergência da série e saber se está parando realmente nas condições estabelecidas pelo problema*/} printf("O cosseno de %.3lf é igual a %lf \n",x,cosx); system("pause"); } O principal problema é o seguinte: O programa só funciona corretamente para ângulos menores que 50 graus, para angulos de maiores ou iguais a 50 graus o programa imprime: o cosseno de (angulo) e igual a -1.#IND00 Não sei porque está ocorrendo este erro. Outra dúvida é que quando imprimo mod(j-cosx) para verificar a convergência, esse termo está aparecendo apenas com 6 casas decimais, não tem como fazer aparecer com 12 casas decimais para poder verificar se o laço está encerrando realmente quando a precisão for de 10^-12??? Grato, Thiago
  3. Putz desculpa, eu errei aqui na hora de copiar e colar o código aqui, agora editei lá corretamente. Desculpa ai. abraço
  4. Gente, eu estava fazendo um programa, e nele eu usava uma função que criei para converter um angulo de graus para radianos. Fiz um programa simples para testar a função e percebi que só funciona de um determinado jeito, gostaria da ajuda de vocês para entender porque do outro jeito está errado, postarei os 2 jeitos aqui. O compilador que uso é o Dev-C++ Assim o programa funcionou corretamente: #include <stdio.h> #include <stdlib.h> double angulo(float ang) {double i; i=ang*3.141592/180; return i;} main() {float x; double xrad; printf("Digite o angulo \n"); scanf("%f",&x); xrad=angulo(x); printf("O angulo em radianos e %f \n",xrad); system("pause");} Assim o programa não funcionou corretamente: #include <stdio.h> #include <stdlib.h> double angulo(double ang) {double i; i=ang*3.141592/180; return i;} main() { double x,xrad; printf("Digite o angulo \n"); scanf("%f",&x); xrad=angulo(x); printf("O angulo em radianos e %f \n",xrad); system("pause");} Ele está dando como resultado sempre 0 para o angulo em radianos. A única mudança que fiz foi mudar o parâmetro da função angulo de float para double, e na função main ao invés de declarar x como float, declarei-o como double. Porque assim não funciona corretamente? Não consigo entender onde está o erro, se alguém pudesse me esclarecer seria de grande ajuda. Grato, Thiago
×
×
  • Criar Novo...