Форум программистов, компьютерный форум CyberForum.ru

Вычисление факториала - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.84
Vexel
 Аватар для Vexel
12 / 12 / 1
Регистрация: 18.10.2009
Сообщений: 159
03.09.2010, 17:37     Вычисление факториала #1
Помогите пожалуйста вычислить факториал:
Миниатюры
Вычисление факториала  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2010, 17:37     Вычисление факториала
Посмотрите здесь:

Си, вычисление факториала C++
C++ Вычисление факториала.
C++ Вычисление факториала числа
C++ Вычисление факториала
C++ Ввод и вычисление факториала.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
03.09.2010, 17:41     Вычисление факториала #2
C++
1
2
3
4
5
6
7
8
9
10
int factorial(int i)
{
        if(i > 1)
                return i * factorial(i - 1);
        else   return i;
}
void main()
{
        cout << factorial(5);
}
c тернарным оператором красивше а это классика
Vexel
 Аватар для Vexel
12 / 12 / 1
Регистрация: 18.10.2009
Сообщений: 159
03.09.2010, 17:47  [ТС]     Вычисление факториала #3
Цитата Сообщение от bobromet Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
int factorial(int i)
{
        if(i > 1)
                return i * factorial(i - 1);
        else   return i;
}
void main()
{
        cout << factorial(5);
}
c тернарным оператором красивше а это классика
Ошибки были, уже исправил. А где вычисление самих иксов, возведение их в степень итд ? А то я вижу тут только факториал от знаменателя вы нашли и все.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
03.09.2010, 17:47     Вычисление факториала #4
Vexel, библиотеки подключите.
/facepalm
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.09.2010, 18:01     Вычисление факториала #5
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
#include <iostream>
#include <cmath>
 
unsigned long long int fact(int n)
{
   return (n>1)?n*fact(n-1):n;
}
 
double count(double x)
{
   double res=0;
   for(int i=1; i<=13; i+=2)
   {
      if(i==3||i==7)
      {
         res-=(pow(x, i)/fact(i));
      }
      else
         res+=(pow(x,i)/fact(i));
   }
   return res;
}
 
int main()
{
   double x;
   std::cout<<"Enter x: ";
   std::cin>>x;
   std::cout<< count(x) <<'\n';
   return 0;
}
Vexel
 Аватар для Vexel
12 / 12 / 1
Регистрация: 18.10.2009
Сообщений: 159
03.09.2010, 18:05  [ТС]     Вычисление факториала #6
Цитата Сообщение от Lavroff Посмотреть сообщение
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
#include <iostream>
#include <cmath>
 
unsigned long long int fact(int n)
{
   return (n>1)?n*fact(n-1):n;
}
 
double count(double x)
{
   double res=0;
   for(int i=1; i<=13; i+=2)
   {
      if(i==3||i==7)
      {
         res-=(pow(x, i)/fact(i));
      }
      else
         res+=(pow(x,i)/fact(i));
   }
   return res;
}
 
int main()
{
   double x;
   std::cout<<"Enter x: ";
   std::cin>>x;
   std::cout<< count(x) <<'\n';
   return 0;
}
Ошибку выдает cpp(4) : error C2632: 'long' followed by 'long' is illegal
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.09.2010, 18:09     Вычисление факториала #7
Vexel, Щет. Тогда просто long. Сек

Добавлено через 46 секунд
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
#include <iostream>
#include <cmath>
 
unsigned long int fact(int n)
{
   return (n>1)?n*fact(n-1):n;
}
 
double count(double x)
{
   double res=0;
   for(int i=1; i<=13; i+=2)
   {
      if(i==3||i==7)
      {
         res-=(pow(x, i)/fact(i));
      }
      else
         res+=(pow(x,i)/fact(i));
   }
   return res;
}
 
int main()
{
   double x;
   std::cout<<"Enter x: ";
   std::cin>>x;
   std::cout<< count(x) <<'\n';
   return 0;
}
HIMen
 Аватар для HIMen
4104 / 1353 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
03.09.2010, 18:10     Вычисление факториала #8
Vexel, компилятор выпрями
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.09.2010, 18:12     Вычисление факториала #9
Но лучше действительно выпрямить компиль. 13! может не влезть в unsigned long, хотя у меня влезает. Проверяйте на своем
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
03.09.2010, 18:14     Вычисление факториала #10
Lavroff, у вас ошибка. Переменная res сначала должна ровняться переменной X.

Мой вариант, может-быть есть ошибка, делал быстро:

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
#include <iostream>
#include <cmath>
 
typedef unsigned long long ull;
ull factorial(int n)
{
    return (n>1) ? n*factorial (n-1) : n;
}
 
double func (double X)
{
    const int operations[]={0, 1, 0, 1, 1, 1}; // 0 - , 1 +-
    int cnt=0;
 
    const double copy_x=X;
    for (size_t i=3; i<=13; i+=2)
    {
        operations [cnt++] ? (X+=pow (copy_x, i) / factorial (i))
                           : (X-=pow (copy_x, i) / factorial (i));
    }
 
    return X;
}
 
int main (void)
{
    double X;
    std::cout << "Input X: ";
    std::cin >> X;
 
    std::cout << "X=" << func (X);
    std::cout << std::endl;
 
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.09.2010, 18:15     Вычисление факториала #11
neske, М. А в чем ошибка-то?) Первая степень x это что?)

Чему равен res после 1-ой итерации?)

C++
1
2
3
4
5
6
7
8
9
for(int i=1; i<=13; i+=2)
   {
      if(i==3||i==7)
      {
         res-=(pow(x, i)/fact(i));
      }
      else
         res+=(pow(x,i)/fact(i));
   }
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
03.09.2010, 18:18     Вычисление факториала #12
Lavroff, этого не углядел, прошу прощения.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
03.09.2010, 18:20     Вычисление факториала #13
neske, На тему ошибок в вашем коде. Их нет. Кроме одной.

C++
1
for (size_t i=3; i<=13; i+=2)
size_t зря. у pow нету перегрузки с size_t. Лучше int.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.09.2010, 18:22     Вычисление факториала #14
Эххх, и все через рекурсию...
C
1
2
3
4
5
6
7
8
9
10
11
12
int myfactorial(int n)
{
    int result;
    
    if (n == 0 || n == 1)
        return 1;
    
    for (result = 1; n > 1; n--)
        result *= n;
    
    return result;
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,693
03.09.2010, 18:22     Вычисление факториала #15
Понятно, спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2010, 19:41     Вычисление факториала
Еще ссылки по теме:

C++ вычисление факториала
C++ Вычисление факториала
C++ Вычисление факториала

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

Или воспользуйтесь поиском по форуму:
bobromet
03.09.2010, 19:41     Вычисление факториала
  #16

Не по теме:

Цитата Сообщение от Vexel Посмотреть сообщение
А где вычисление самих иксов, возведение их в степень итд ? А то я вижу тут только факториал от знаменателя вы нашли и все.
Тема называется «числовые ряды »? Нет. «Ряд Тейлора/Маклорена» ? Тоже нет. Тема называется «вычислить факториал». С тем же успехом можно было назвать «операция сложения/деления/дроби и т.д.». Я еще понимаю был бы выложен код который неработает, типа нужна помощь, было бы понятно что надо. А так.. просто запостил задачу, через часик скопировал решение, раздал спасибы. А смысл?

Yandex
Объявления
03.09.2010, 19:41     Вычисление факториала
Ответ Создать тему
Опции темы

Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru