Показать сообщение отдельно
Старый 23.11.2012, 20:25   #1 (permalink)
Sorento
Member
 
Регистрация: 23.11.2012
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Lightbulb Программа почти работает

На фотографиях задание.

вот код:
Код:
#include <math.h>
#include <stdio.h>
#include <conio.h>

 
long double fact(int N)
{
    if(N < 0) // åñëè ïîëüçîâàòåëü ââåë îòðèöàòåëüíîå ÷èñëî
        return 0; // âîçâðàùàåì íîëü
    if (N == 0) // åñëè ïîëüçîâàòåëü ââåë íîëü,
        return 1; // âîçâðàùàåì ôàêòîðèàë îò íóëÿ - íå óäèâëÿåòåñü, íî ýòî 1 =)
    else // Âî âñåõ îñòàëüíûõ ñëó÷àÿõ
        return N * fact(N - 1); // äåëàåì ðåêóðñèþ.
}

int main()
{
      double n, b, xn, xk, sh, t,  x, sum, w, f; 
      int i;
      //char string[105];
      char Y,N;
      
      a1: while(1)
      {  
      printf("Vvedite x nachal'noe, x konechnoe, sdvig, shag, tochnost'\n");       
      scanf("%lf%lf%lf%lf%lf", &xn,&xk,&b,&sh,&t);
      {
               
            
printf("+---------------------------------------+\n");
printf("¦    X    ¦cos(x+b) ¦ Function¦    N    ¦\n");
printf("¦---------+---------+---------+---------¦\n");
      for(x=xn;x<xk+sh/8;x+=sh)
      {
    sum=0.0;
    n=0.0;
    while(fabs(pow(x, n)*cos(b+3.14*n/2))/fact(n)>t)
    {
                      n++;
                      }
                      for(i = 0.0; i<n; i++)
                      sum+=pow(x, i)*cos(b+M_PI*i/2)/fact(i);
    
       
printf("¦ %6.2f  ¦ %6.3f  ¦ %6.3f  ¦  %6g   ¦\n", x, cos(x+b), sum, n);
      }
printf("+---------------------------------------+\n");


a2: printf("Prodolzhit' vichysleniya? (Y/N)\n");




}
if(getche()=='Y') goto a1;
if(getche()=='N') return 0;
else goto a2;
}
return 0;
}


Не пойму почему после 35-ого элемента счет через ряд сбивается, и начинают вываливаться большие числа.
Изображения
   
Sorento вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070