Ir ao conteúdo
  • Cadastre-se

Dúvida em programa básico - C


Luckystriike

Posts recomendados

Boa tarde a todos,

 

Estou aprendendo agora a programar. Foi me passado exercício abaixo, que envolve exponencial:

 

24v8dnr.jpg

 

Fiz o código abaixo para resolver o problema, porém não funciona.

Acho que está dando problema porque entra em um loop infinito. 

 

 

#include <stdio.h>


#include <stdlib.h>
#include <math.h>

int main () {

int cont;
float expp;
double nfat, numfat, fat, pot, x, ex, acum, primter, resultfinal;

printf ("Digite um numero:\n");
scanf ("%f", &x);

primter = pow(x,0);

expp = exp(x);

pot = 1;
acum = 0;

for (cont=0;;cont++) {

fat = 1;
numfat = cont;
nfat = numfat;

while (nfat > 1) {

fat = fat * nfat;
nfat--;

}

ex = (pow(x,pot)) / fat;

pot++;

acum = acum + ex;

if (acum == expp) {
break;
}
}

resultfinal = primter + acum;

printf ("\n\nO valor digitado foi:\n%.2f\n", x);
printf ("\nO valor exponencial do valor digitado calculado atraves do codigo é:\n%f\n", resultfinal);
printf ("\nO valor exponencial do valor digitado calculado atraves da funcao é:\n%f\n", expp);
printf ("\nO numero de termos utilizados na serie foram:\n%d\n\n", cont);

system ("PAUSE");
return 0;

}

 

 

Após ler o x, o programa não faz mais nada. Ele para.

Será que haveria algum modo de limitar o número de casas após a virgula, para parar o programa quando atingir um determinado números de casas após a virgula e não ficar no loop infinito?

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...