Программа для вычисления значения выражения:
1!+2!+3!+⋯+n!
Исходные данные: целое число n.
Данные, выводимые на экран: значение выражения, либо сообщение «Исходные данные не верны!» (при n≤0).
C/C++
Задание по программированию c++
#include "iostream"
#include "iomanip"
#include "cmath"
using namespace std;
int main(){
int n; long double s=0; cout<<"n: "; cin>>n;
if(n<0)cout<<"Error\n";
else {for(int i=1;i<=n;i++)s+=tgamma(i+1);
cout<<setprecision(0)<<fixed<<s<<'\n';}}
Сообщения замени на свои.
Или более простой вариант, со значительно меньшим диапазоном допустимых значений n:
#include "iostream"
using namespace std;
int main(){
int n; long k=1, s=0; cout<<"n: "; cin>>n;
if(n<0)cout<<"Error\n";
else {for(int i=1;i<=n;i++)s+=k*=i; cout<<s<<'\n';}}
#include "iomanip"
#include "cmath"
using namespace std;
int main(){
int n; long double s=0; cout<<"n: "; cin>>n;
if(n<0)cout<<"Error\n";
else {for(int i=1;i<=n;i++)s+=tgamma(i+1);
cout<<setprecision(0)<<fixed<<s<<'\n';}}
Сообщения замени на свои.
Или более простой вариант, со значительно меньшим диапазоном допустимых значений n:
#include "iostream"
using namespace std;
int main(){
int n; long k=1, s=0; cout<<"n: "; cin>>n;
if(n<0)cout<<"Error\n";
else {for(int i=1;i<=n;i++)s+=k*=i; cout<<s<<'\n';}}
Николай Округин
Спасибо!
Если надо получить точное значение суммы, причём потолок n не ограничен числом 20, тогда надо использовать какие-нибудь библиотеки типа GMP для работы с целыми числами неограниченной длины. Посмотрите на скрине как с этой библиотекой всё быстро и точно рассчитывается и выводится на экран! Если нужна программа -могу скинуть: исходный код очень короткий. А сразу не пишу её потому что не знаю какими средствами Вы располагаете -вдруг у Вас нет ни GMP, ни схожих с ней библиотек, да к тому же ещё и числа n со значениями больше двадцати не требуются, а если и требуются, тогда абсолютная точность не требуется.
А без GMP будет так (до n=20 включительно -точно, можно сделать и для n>20, но будет неточно):
#include <iostream>
using namespace std; int main()
{ int i, n; unsigned long long f, s; for (;;)
{ s = 0; f = 1; cout << "n: "; cin >> n; if (n < 1)
cout << "Исходные данные не верны!\n";
else { for (i = 1; i <= n; i++) { f *= i; s += f; }
cout << s << endl; } } }

А без GMP будет так (до n=20 включительно -точно, можно сделать и для n>20, но будет неточно):
#include <iostream>
using namespace std; int main()
{ int i, n; unsigned long long f, s; for (;;)
{ s = 0; f = 1; cout << "n: "; cin >> n; if (n < 1)
cout << "Исходные данные не верны!\n";
else { for (i = 1; i <= n; i++) { f *= i; s += f; }
cout << s << endl; } } }

Похожие вопросы
- Задание по программированию c++, буду благодарен помощи
- Помогите с Заданием по программированию c++
- Помогите с заданием по программированию язык C(не С++)
- Доброго всем дня. Помогите с заданием по программированию С++ (Программа Dev-C++)
- Задание по программированию язык C/СИ
- Задание 4 по Теме Функции. Перегрузка Функций. Рекурсия. На языке программирования C++
- Задача по программированию C++
- Доброго всем дня. Помогите с заданием по программированию С++ (Программа Dev-C++)
- Помогите сделать задание по программированию на C++
- Программирование C++. Задание на строки и символы