Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
1

Программа вычисления факториала N с циклом for

29.07.2020, 09:42. Показов 584. Ответов 5
Метки нет (Все метки)

Программа вычисления факториала N с циклом for:
N! = 0! + 1! + 2! + 3! + 4! + 5!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses Crt;
Var N: Integer; {Кол. факториалов}
       Y: Integer; {Для хранения очередного шага}
        i: Integer; {Счётчик числа шагов}
        S: Integer; {Накопитель суммы}
begin ClrScr;
Write(' Ввести кол. факториалов: ');
    ReadLn(N);
       Y:= 1;
        S:= 1; {при  0}
WriteLn(' Ряд факториалов:');
   for i:= 1 to N-1 do begin
      Y:= Y * I;
       S:= S + Y;
Write('    ',Y);
   end;  WriteLn;
WriteLn(' Сумма равна: ',S);
   ReadLn
        end.
Строку Write(' ', Y); вставил я. В ответе её не было.
На выходе имеем:
Pascal
1
2
3
4
Ввести кол. факториалов:  5
Ряд факториалов:
  1    2    6    24
Сумма равна:  34
Вопросы:
1. Нет первого слагаемого от факториала 0! = 0
2. Сумма ряда S = 33, а выдана S = 34.
И как же быть? Какая же на самом деле должна быть сумма?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2020, 09:42
Ответы с готовыми решениями:

Сделать программу вычисления факториала циклом for или repeat или while
Решить циклом for или repeat или while Составить программу для вычисления N!(факториал числа N)....

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

программа вычисления факториала любого числа
помогите написать программу на C++!!! надо написать программу, которая вычислит факториал любого...

JFrame - программа вычисления факториала, не правильно работает
Вот такой код, для вычисления факториала успешно справляется, вывод через консоль public class...

5
1601 / 826 / 342
Регистрация: 11.10.2018
Сообщений: 4,339
29.07.2020, 10:27 2
Цитата Сообщение от Petro29 Посмотреть сообщение
Pascal
1
for i:= 1 to N-1 do begin
- я думал до N включительно надо.

Добавлено через 8 минут
Все правильно он считает. Первая единица добавляется в этой строке
Pascal
1
S:= 1; {при  0}
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program Hello;
Var N: Integer; {Кол. факториалов}
       Y: Integer; {Для хранения очередного шага}
        i: Integer; {Счётчик числа шагов}
        S: Integer; {Накопитель суммы}
begin
 
WriteLn('Ввести кол. факториалов = ');
ReadLn(N);
    Y:= 1;
    S:= 1; {при  0}
    Write('    ', S);  {Теперь есть первое слагаемое.}
WriteLn(' Ряд факториалов:');
    for i:= 1 to N do
    begin
        Y:= Y * i;
        S:= S + Y;
        Write('    ', Y);
    end;
WriteLn;
WriteLn('Сумма равна: ',S);
ReadLn;
end.
0
Модератор
63691 / 47258 / 32568
Регистрация: 18.05.2008
Сообщений: 114,525
29.07.2020, 10:33 3
Цитата Сообщение от Petro29 Посмотреть сообщение
Какая же на самом деле должна быть сумма?
1+1+2+6+24+120=154

Pascal
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
uses Crt;
Var N: Integer; {Кол. факториалов}
    Y: Integer; {Для хранения очередного шага}
    i: Integer; {Счётчик числа шагов}
    S: Integer; {Накопитель суммы}
begin
ClrScr;
Write(' Ввести кол. факториалов: ');
ReadLn(N);{введем N=5}
WriteLn(' Ряд факториалов:');
for i:=0 to n do
write(i:4);
writeln;
Y:= 1;
Write(Y:4);
S:= Y; {при  0}
for i:= 1 to N do
 begin
  Y:= Y * I;
  S:= S + Y;
  Write(Y:4);
 end;
WriteLn;
WriteLn(' Сумма равна: ',S);
ReadLn
end.
0
Миниатюры
Программа вычисления факториала N с циклом for  
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
25.08.2020, 08:32  [ТС] 4
Вашу программу немного подкорректировал.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses Crt;
Var N, Y, I, S: Integer; 
begin ClrScr;
Write(' Ввести  кол. факториалов: ');
    ReadLn(N); {Введём N = 5}
 WriteLn(' Ряд факториалов:');
   for i:= 0 to N-1 do
      Write(i:4);
         WriteLn;
           Y:= 1;
       Write(Y:4);
          S:= Y;  {при  0}
   for i:= 1 to N do begin
      Y:= Y * i;   S:= S + Y;
Write (Y:4);
   end;  WriteLn;
WriteLn(' Сумма факториалов равна: ',S);
   ReadLn
        end.
На выходе имеем:
Pascal
1
2
3
4
5
Ввести кол. факториалов:  5
Ряд факториалов:
  0    1    2    3    4
  1    1    2    6    24    120
Сумма факториалов равна:  154
Программа от FFPowerMan на эту же тему не доработана. Выход у неё такой:
Pascal
1
2
3
4
Ввести кол. факториалов:  5
    1  Ряд факториалов:
    1    2    6    24    120
Сумма факториалов равна:  154
нет значения факториала 0!. И сумма факториалов не та.

Puporev, к вам два вопроса:
Вопрос 1: по определению, n! = n* (n – 1), тогда (n -1) = n! / n, следовательно, 0! = (1 – 1)! = 1! / 1 = 1. Вот это «следовательно» и не понятно: с какой стати (1 – 1)! = 1! / 1= 1 – разность превратилась в дробь?
Вопрос 2: попробовал сделать выход двух строк
Pascal
1
2
Ряд факториалов:
         0   1   2   3   4
в таком виде:
Pascal
1
2
   Ряд факториалов:
         0!   1!   2!   3!   4!
не получилось. Восклицательный знак – это символ – тип Char, а числа – тип Integer. И как их совместить, чтобы получить
такой выход: 0! 1! 2! 3! 4!.
0
Модератор
63691 / 47258 / 32568
Регистрация: 18.05.2008
Сообщений: 114,525
25.08.2020, 10:55 5
Pascal
1
2
3
writeln('Ряд факториалов');
for i:=0 to 4 do
write(i,'! ');
0
Модератор
8457 / 4193 / 2888
Регистрация: 17.08.2012
Сообщений: 13,341
26.08.2020, 18:07 6
Цитата Сообщение от Petro29 Посмотреть сообщение
1. Нет первого слагаемого от факториала 0! = 0
Вы заблуждаетесь. 0! = 1.

Теория: Википедия - Факториал.

Добавлено через 3 часа 49 минут
Ответ на Вопрос 1: по определению, n! = n * (n – 1)! а не то, что Вы написали. Ещё раз: не (n - 1) - эн минус один, это то, что Вы написали, а (n - 1)! - эн минус один факториал.

n! = это произведение всех натуральных чисел от 1 до n.
n!=1*2*...*(n-2)*(n-1)*n

(n-1)! - это произведение всех натуральных чисел от 1 до (n-1).
(n-1)!=1*2*...*(n-2)*(n-1)

умножим (n-1)! на n, получится n!
n*(n-1)!=1*2*...*(n-2)*(n-1)*n=n!

Тогда

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{n!}{n}\,=\,\frac{1\cdot 2\cdot \,...\,\cdot (n-2)\cdot (n-1)\cdot n}{n}\,=\,1\cdot 2\cdot \,...\,\cdot (n-2)\cdot (n-1)\,=\,(n-1)!<br />

Конкретный пример. Пусть, например, n = 7. Тогда

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{7!}{7}\,=\,\frac{1\cdot 2\cdot 3\cdot 4\cdot 5\cdot 6\cdot 7}{7}\,=1\cdot 2\cdot 3\cdot 4\cdot 5\cdot 6\,=\,6!\,=\,(7-1)!<br />

При n=1 получим

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
\frac{1!}{1}\,=\,\frac{1}{1}\,=1\,=\,0!\,=\,(1-1)!<br />
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2020, 18:07

Программа вычисления площади круга с циклом
{deleted} П.5.19.Правил Запрещено создавать темы в виде ссылок на задания или коды программ,...

Программа вычисления факториала заданного числа - пошаговая отладка
Здравствуйте! Мне надо было написать программку вычисляющую факториал заданного числа. Я написал но...

С циклом «пока» или циклом «до» написать программу вычисления суммы S квадратов чисел от 1 до N
В общем тут сделано, что высчитывает только четные числа,а надо чтобы все числа считал, помогите...

Вычисление факториала циклом
Написать программу вычисления факториала любым циклом

Вычисление факториала циклом и рекурсией
Помогите с вычислением выражения: S=(1/1!)+(1/2!)+...+(1/k!) C++, циклом и рекурсией.

не могу написать программу, траблы с циклом у факториала
Даны вещественные числа x, E. Вычислить сумму ряда S=1+(x^2)/2!+(x^4)/4!+...+(x^(2*n))/(2*n)! с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.