Не компилируется код вычисления факториала - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<stdio.h>
const float x[11]={0.101, 0.106, 0.111, 0.116, 0.121, 0.126, 0.131, 0.136, 0.141, 0.146, 0.151};/*данные х*/
const float y[11]={0.26183,0.27644,0.29122,0.30617,0.32130,0.33660,0.35207,0.36773,0.38357,0.39959,0.41579};/*данные у*/
const int N=11;
const float h=0.05;/*шаг*/
const float X[4]={0.1035, 0.1492, 0.096, 0.153};/*данные Х*/
float dy0[12][12];/*база сохранения значений разностей*/
 
long fac(int i) /*подсчет факториала*/
 {
  if(i==1||i==0) return 1;
  return fac(i-1)*i;
 }
 
float delta(int k) /*разность к-ого порядка*/
{
return dy0[0][k];
}
 
void matrix() /*вывод разностей*/
{
int p=11;
for(int i=0;i<11;i++)
  {dy0[i][0]=y[i];}
for(int j=1; j<12;j++)
 
 {
   printf("%d\n ",j);/*номер строки*/
     for(i=0; i<p; i++)
      {
   dy0[i][j]=dy0[i+1][j-1]-dy0[i][j-1];
   printf("%3.5f|",dy0[i][j]);
      }
     printf("\n\n");
     p--;
 }
 
}
 
float a(int k)/*подсчет разностей*/
{
 float A;
 A=delta(k)/fac(k)/pow(h,k);
 return A;
}
 
float result(int r) /*многочлен Ньютона*/
{
 float n=0,p=1;
   for(int i=0; i<N;i++)
    {
      p=1;
      for(int j=0; j<i;j++)
    {
    p*=(X[r]-x[j]);
    }
      n+=p*a(i);
    }
return n;
}
 
int main()
{
  printf("\n Newton Method\n");
  printf("   x");
  printf("       y");
  printf("\n\n");
for(int j=0;j<11;j++)
  {
  printf("\n");
  printf("%3.3f  ",x[j]);
  printf("%f  ",y[j]);
  }
getch();
printf("\n\nTablica raznostey:\n\n");
matrix();
 
for(int i=0; i<4;i++)
 {
 printf("\n x=%1.4f   y=%f",X[i],result(i));
 }
getch();
return 0;
}
Вот собственно код Подчеркивает первую строку,убираю .h Начинает подчеркивать 27 Подскажите,как исправить?

Решение задачи: «Не компилируется код вычисления факториала»

textual
Листинг программы
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
 
float result(int r);
float a(int k);
float delta (int k);
long fac(int i);
void matrix( void );
 
const float x[11] = {0.101, 0.106, 0.111, 0.116, 0.121, 0.126, 0.131, 0.136, 0.141, 0.146, 0.151};/*данные х*/
const float y[11] = {0.26183,0.27644,0.29122,0.30617,0.32130,0.33660,0.35207,0.36773,0.38357,0.39959,0.41579};/*данные у*/
const int N = 11;
const float h=0.05;                                  /*шаг*/
const float X[4] = {0.1035, 0.1492, 0.096, 0.153};   /*данные Х*/
float dy0[12][12];                                   /*база сохранения значений разностей*/
 
 
int main ( void )
{
  int j, i;
 
  printf("\n Newton Method\n");
  printf("   x");
  printf("       y");
  printf("\n\n");
 
for (j = 0; j < 11; j++)
  {
  printf("\n");
  printf("%3.3f  ",x[j]);
  printf("%f  ",y[j]);
  }
getchar();
printf("\n\nTablica raznostey:\n\n");
matrix();
 
for (i = 0; i < 4; i++)
 {
 printf("\n x=%1.4f   y=%f",X[i],result(i));
 }
getchar();
return 0;
}
 
float result(int r)                      /*многочлен Ньютона*/
{
 float n = 0, p = 1;
 int j, i;
   for(i = 0; i < n; i++)
    {
      p = 1;
      for (j = 0; j < i; j++)
    {
    p *= (X[r] - x[j]);
    }
      n += p * a(i);
    }
return n;
}
 
float a(int k)                                      /*подсчет разностей*/
{
 float a;
 a = delta(k)/fac(k)/pow(h,k);
 return a;
}
 
float delta (int k)                                /*разность к-ого порядка*/
{
return dy0[0][k];
}
 
long fac(int i)                                   /*подсчет факториала*/
 {
  if(i==1||i==0) 
    return 1;
  return fac(i-1)*i;
 }
 
 void matrix( void )         /*вывод разностей*/
{
int p = 11, i, j;
for (i = 0; i < 11; i++) {
  dy0[i][0]=y[i];
}
for (j = 1; j < 12; j++)
 {
   printf("%d\n ",j);        /*номер строки*/
     for(i = 0; i < p; i++)
      {
   dy0[i][j] = dy0[i+1][j-1] - dy0[i][j-1];
   printf("%3.5f|",dy0[i][j]);
      }
     printf("\n\n");
     p--;
 }
 return;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdlib.h, math.h, printf.h
  2. Объявляются функции: result(int r), a(int k), delta(int k), fac(int i), matrix()
  3. Объявляются константы: N, h, X[4], x[11], y[11]
  4. Создается массив dy0[12][12] для хранения разностей
  5. В функции main() вычисляется и выводится факториал числа с помощью функции fac(int i)
  6. В цикле for выводятся значения x[j] и y[j] для j от 0 до 10
  7. Вызывается функция matrix(), которая выводит разности в виде матрицы
  8. В функции result(int r) вычисляется значение многочлена Ньютона
  9. В функции a(int k) вычисляется значение разности k-го порядка
  10. В функции delta(int k) вычисляется значение разности k-го порядка
  11. В функции fac(int i) вычисляется значение факториала числа i

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы