![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Дмитрий Ильин |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 31 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Доброго времени суток жителям форума,в изучении темы задался вопросом решения задач(2 штучки),свои варианты написал,но не уверен,правильно ли с точки зрения программирования
Задание 6.5. Написать программу вычисления n! (факториал числа n), где n положительно. Определение факториала: 0! = 1 1! = 1 2! = 1*2 3! = 1*2*3 n! = 1 * 2 * 3 *.... * (n - 1) * n Другими словами, n! — это произведение первых n натуральных чисел. Каждый следующий результат (обозначим его Р) получается путем умножения предыдущего результата (предыдущего Р) на счетчик, который пробегает значения от 1 до n. Обозначим значение счетчика буквой k. Получаем общий вид выражения: Р = Р * k (то есть воспользуемся рекуррентной формулой вычисления факториала: n! = (n - 1)! * n). Программа должна быть организована так: с клавиатуры вводится число n (n— положительно), а затем на экран выдается таблица факториалов чисел до n включительно. ____________________________________________________ Как я понял натуральные числа-все целые,не отрицательные числа(12,256,1),но не (-24.5 ; 45.6); Тогда вот код: Код uses crt; var p,k,n:integer; begin p:=1; readln(n); for k:=1 to n do p:=p*k; writeln(p); end. Почему k:=1 ? ...Потому что если К будет =0 то P:=p*k = (P*0),а любое число,умнодженное на ноль - ноль),поэтому я взял k:=1 __________________________________ Задание 6.6. Написать программу вычисления суммы ряда S=1 + 2 + 3 + 4 + 5 + 6. Нарисовать блок-схему и заполнить таблицу трассировки. Убедиться при трассировке, что сумма равна 21. ________________ Мое решение : Код uses crt; var p,k,n:integer; begin p:=0; readln(k); for n:=1 to k do p:=P+n; writeln(p); end. Вот собственно,можете проверить,что я не так делаю? Спасибо. -------------------- Каждый программист - Творец (с)
|
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Названия переменных - стандартные: S=сумма, P=произведение, i=управляющая переменная цикла. Алгоритм такой:
Цитата Заметил тут лишь закономерность,в знаменателе идет три цифры,причем начинаются они с N (а не с N+1). Значит, для того чтобы найти знаменатель на каждом шаге, достаточно перемножить 3 последовательных числа, начиная с N. Как это проще всего сделать? Правильно, написав вложенный цикл j = 0..2, и добавив переменную j к номеру текущего слагаемого. Тогда для i = 1 внутренний цикл переберет значенияj = (1+0), (1+1), (1+2) = 1, 2, 3 , для i = 2: j = (2+0), (2+1), (2+2) = 2, 3, 4 и так далее... Ну, а перемножать 3 числа в цикле ты уже умеешь. |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2024 22:22 |