0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 75
1

Не компилируется код вычисления факториала

20.03.2016, 22:46. Показов 1044. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#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
Подскажите,как исправить?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2016, 22:46
Ответы с готовыми решениями:

Прокомментировать код вычисления факториала
Здравствуйте, прокомментируйте пожалуйста пример задачи,если можно конечно, я его совсем не поняла(...

Рекурсивная функция, вычисления факториала
Вычислить выражение G =N!+M! , где для вычисления факториала используется рекурсивная функция.

Ошибка в коде вычисления факториала
Кто подскажет где в данной программе ошибка? Заранее благодарю! #include &lt;stdio.h&gt; #include...

Написать рекурсивную функцию вычисления факториала
3. Написать рекурсивную функцию вычисления факториала. Применить функцию для вывода значений...

5
48 / 48 / 57
Регистрация: 25.11.2015
Сообщений: 140
21.03.2016, 01:06 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Так должно работать хотя я на твоем месте инициализацию сделал бы внутри main () а потом уже по необходимости передавал отдельно взятые аргументы функциям.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#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
9 / 9 / 7
Регистрация: 25.01.2016
Сообщений: 39
21.03.2016, 01:08 3
Ты пытаешься инклудить #include<iostream.h> файл которого нет для си, а есть #include<iostream> для си++ , а в 27 строке ругается что i объявлена в for выше, объяви ее отдельно или повторно еще в этом for'е , может и не совсем так, но все выполняется норм с моими поправками.
0
612 / 373 / 69
Регистрация: 21.09.2008
Сообщений: 1,277
21.03.2016, 18:07 4
Цитата Сообщение от Nikita-C Посмотреть сообщение
Начинает подчеркивать 27
Подскажите,как исправить?
Режим компиляции по стандарту C99? Для gcc и clang это опция -std=c99.
1
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 75
21.03.2016, 22:45  [ТС] 5
Благодарю,все работает

Добавлено через 2 минуты
Уже порылся в compiler flags добавил С99)
0
0 / 0 / 0
Регистрация: 25.12.2014
Сообщений: 75
21.03.2016, 23:07  [ТС] 6
Почему-то пропали игрики
Миниатюры
Не компилируется код вычисления факториала  
0
21.03.2016, 23:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2016, 23:07
Помогаю со студенческими работами здесь

Вычислить 4!+7!+2!, используя функцию вычисления факториала
Функции: 1) Вычислить 4!+7!+2!, используя функцию вычисления факториала 2) Ввести три числа....

Проверка кода программы вычисления факториала
Прошу меня извинить, если эту задачу вы видите не в первый раз, но теперь я все сделал сам и хочу...

Написать программу макроса вычисления факториала числа n
Помогите пожалуйста с задачкой,нужен код. Написать программу макроса вычисления факториала числа n.

Функция вычисления факториала выводит неправильные значения
Ошибки компилятор не выдает. А вот текст программы: #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru