Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 15:22   #1
blacknock
 
Регистрация: 24.06.2011
Сообщений: 3
По умолчанию С++ Задача

Вот собственно задача,

Составить программу для вычисления точного значения суммы 1! + 2! + 3! + … + n! при n >= 10

Решается через массив.

Есть пример по которому нужно делать:

Цитата:
Составить программу для вычисления 100!
#include<iostream.h>
#include<conio.h>
void main()
{ int i,k,n=200,A[200];
clrscr();
for(i=0; i<n; i++)
A[i]=0;
A[0]=1;
for(k=0; k<100; k++)
{ for(i=0; i<n; i++)
A[i]*=(k+1);
for(i=0; i<n; i++)
{ A[i+2]+=(A[i]/100);
A[i+1]+=(A[i]%100/10);
A[i]%=10;
}
}
for(i=0; i<n; i++)
cout<<A[n-i-1];
cout<<endl;
getch();
}
Вот что смог сделать я,

Цитата:
#include<iostream.h>
#include<conio.h>
void main()
{ int z,i,k,n=200,A[200];
clrscr();
cout<<"vvedite chislo z=";
cin>>z;
for(i=0; i<n; i++)
A[i]=0;
A[0]=1;
for(k=0; k<z; k++)
{ for(i=0; i<n; i++)
A[i]*=(k+1);
for(i=0; i<n; i++)
{ //A[i+2]+=(A[i]/100);
A[i+1]+=(A[i]%100/10);
A[i]%=10;
}
}
for(i=0; i<n; i++)
cout<<A[n-i-1];
cout<<endl;
getch();
}
если я тут все правильно написал, то программа что я сделал вычисляет любой факториал любого положительного числа(в пределах разумного), и теперь мне нужно найти сумму как написано в задании. Прошу помочь, как это сделать? Много чего перепробовал но ничего не действует.
blacknock вне форума Ответить с цитированием
Старый 24.06.2011, 15:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
long int fac[10],sum=1;fac[0]=1;
for(int i=1;i<10;i++){fac[i]=fac[i-1]*i;sum+=fac[i];}printf("Сумма факториалов=%d",sum)
P.S. Код даже смотреть не стал, просто не понял в нем ничего.
I'm learning to live...

Последний раз редактировалось Stilet; 24.06.2011 в 15:32.
Stilet вне форума Ответить с цитированием
Старый 24.06.2011, 15:32   #3
blacknock
 
Регистрация: 24.06.2011
Сообщений: 3
По умолчанию

так, спасибо. Вот только куда мне это впихнуть?
blacknock вне форума Ответить с цитированием
Старый 24.06.2011, 16:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну как куда? Это и есть вся программа от начала main и до ретурна
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2011, 18:58   #5
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от blacknock Посмотреть сообщение
Решается через массив.
Зачем массив ?

Это же классический случай через рекурсию, вот:
Код:
// факториал числа
int factorial ( int n)
{
if ( n==1) return 1;
return n * factorial ( n-1);
}
// сумма факториалов числа
int sumfactorial ( int n)
{
if ( n==1) return 1;
return factorial( n) + sumfactorial ( n-1);
}
// main
int main()
{
	int n =10;
	cout<<sumfactorial(n);
        return 0;
}
An1ka вне форума Ответить с цитированием
Старый 25.06.2011, 03:44   #6
blacknock
 
Регистрация: 24.06.2011
Сообщений: 3
По умолчанию

нужно именно через массив, что бы остальное заполнялось нулями.
вот так вот
посмотри как сделан 100!
blacknock вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51
Задача RAFA91 Помощь студентам 1 10.02.2011 16:55
Задача slavik-slash Общие вопросы C/C++ 0 05.01.2011 16:53
Задача ksandrj Помощь студентам 0 23.09.2010 14:29