2016-03-24 19 views
0
int powi(int a,int b) 
{ 
     if(b<0)  
     return 1/powi (a,-b); 
     else if(b==0) 
     return 1; 
     else if(b==1) 
     return a; 
     else 
     return a*powi(a,b-1); 

} 

int factorial(int number) 
{ 
    int x,fac; 
    /* numberi scanfle istemis ona gore dusun */ 
    fac=1; 

    for(x = 1; x <= number; x++) 
    { 
     if (number >= 0) 
     fac = fac * x; 
     else 
     fac=1; 
    } 
return 0; 
} 


void getInputs(int *degree,int *n,int *exit) 
{ 
    scanf("%d %d",degree,n); 
    if(*degree=='e') 
     *exit=1; 
    else 
     *exit=0; 

} 

double cosine(int degree,int n) 
{ 
#define pi 3.14 
int sum,i; 
    if(degree<360 && degree>-1) 
     degree=(degree*pi)/180; 
    else if(degree<0) 
     { do 
       { degree=degree+360; 
       } while(degree<0); 
     degree=(degree*pi)/180; 
     } 
    else 
     { 
     degree=degree%360; 
     degree=(degree*pi)/180; 
     } 

for(i=0;i<n+1;i++) 

    { 
     sum=0; 
     sum=sum+powi(-1,n)*powi(degree,2*n)/factorial(2*n); 


    } 

return 0; 

} 

double sine(int degree,int n) 
{ 
int i,sum; 
#define pi 3.14 
    if(degree<360 && degree>-1) 
     degree=(degree*pi)/180; 
    else if(degree<0) 
     { do 
       { degree=degree+360; 
       } while(degree<0); 
     degree=(degree*pi)/180; 
     } 
    else { 
     degree=degree%360; 
     degree=(degree*pi)/180; 
     } 

for(i=0;i<n+1;i++) 

    { 
    sum=0; 
     sum=sum+powi(-1,n)*powi(degree,2*n+1)/factorial(2*n+1); 
    } 
return 0; 

} 

Herkese merhaba, günah hesaplamayı deneyen ve Taylor ve Maclorin serileri aracılığıyla bu küçük kodlarım var. Ama bir şeyle uğraştığımı düşünüyorum. Ana işlevsiz temel kod EX için: günahı çağırmaya çalıştığımda (30,4) sonsuz bir döngü verir. Gerçekten nerede sıkıştığını bulamıyorum.Sınırsız Döngüsün, Infinite Loop içinde kullanım dışı kullanımı C

Biraz yardım istenirdi. Zaman ayırdığınız için teşekkür ederiz.

+0

çift

  • dönüş toplamı typecasting gerekir. Aslında çok fazla. – haccks

  • +0

    'int's yerine' double's öğesini kullanın. – alain

    +0

    sadece bu bakışta sonsuz döngüden daha fazla sonsuz özyineleme gibi görünüyor. Diğer tüm döngüler iyi bir şekilde sonlanması gerektiği gibi göründüğü için, sorunları dikkatli bir şekilde kontrol edin. –

    cevap

    0
    double sum=0; 
    for(i=0;i<n+1;i++) 
    { 
        sum=sum+(double)(powi(-1,n)*powi(degree,2*n+1))/factorial(2*n+1); 
    } 
    

    return sum;

    deneyin uzun ifadesini bölünürken, çıkış olabilir whoose u çift
  • olarak toplamını ilan etmek gerek bu

    1. bir ondalık hayır. u yüzer ya da daha doğrusu o "küçük kod" olarak adlandırılan değil 0