Не компилируется код вычисления факториала - C (СИ)
Формулировка задачи:
Добрый вечер
Вот собственно код
Подчеркивает первую строку,убираю .h
Начинает подчеркивать 27
Подскажите,как исправить?
#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;
}Решение задачи: «Не компилируется код вычисления факториала»
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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdlib.h, math.h, printf.h
- Объявляются функции: result(int r), a(int k), delta(int k), fac(int i), matrix()
- Объявляются константы: N, h, X[4], x[11], y[11]
- Создается массив dy0[12][12] для хранения разностей
- В функции main() вычисляется и выводится факториал числа с помощью функции fac(int i)
- В цикле for выводятся значения x[j] и y[j] для j от 0 до 10
- Вызывается функция matrix(), которая выводит разности в виде матрицы
- В функции result(int r) вычисляется значение многочлена Ньютона
- В функции a(int k) вычисляется значение разности k-го порядка
- В функции delta(int k) вычисляется значение разности k-го порядка
- В функции fac(int i) вычисляется значение факториала числа i