Прежде всепго, надо найти формулу для общего члена последовательности. После 2/3 следует 3/5, затем 4/7.
Видно, что числитель увеличивается на 1, знаменатель - на 2.
Конечный элемент 10/9 портит всю картину, он явно неверен. Если считать по числителям, в последовательности должно быть (10 - 2) + 1 = 9 членов. Тогда и в знаменателе должно быть не 9, а девятое нечетное число, начиная с 3, т.е. 19. Вся ясно, опечатка, пропущена 1.
Итак, можно написать цикл с параметром i, меняющимся от 2 до 10, а каждый член последовательности будет иметь вид i / (2×i-1).
Ну а сумма и произведение накапливаются в этом же цикле стандартным
Чтобы не терять точности вычислений, отдельно вычислим значения суммы и произведения в числителе и знаменателе, а затем выполним деление - единственную операцию, в которой можно потерять точность, если результат непредставим десятичной дробью с количеством цифр, не превыщающих 15 (это точность стандартной арифметики с плавающей точкой на компьютере).
При расчете произведения нужно понимать, что диапазон представления целых чисел в компьютере ограничен типом целочисленной переменной, выбранной для хранения произведения. Оценим максимальную величину произведения чисел по знаменателю, поскольку там значения больше. Будет вычисляться произведение 3×5×7×...×19. Грубо оценим по "серединке" значения этого ряда. (3+19)/2 = 11 и таких значений 9. 11⁹ > 10⁹ и опасно приближается к верхнему порогу допустимых значений 2.1×10⁹ для целщго типа integer, хранящегося у современных паскалей в 4-х байтах (а у старого ТурбоПаскаль вообше в двух). Поэтому для произведения лучше выбрать восьмибайтовое представление данных int64.
Получив ответ, мы видим, что на самом деле произведение равно 654729075, т.е. не превышает допустимого для integer порога. Но это мы теперь можем поумничать, зная результат.
===== PascalABC.NET =====
begin
var (s1, s2) := (0, 0); // нули для сумм
var p1, p2: int64;
(p1, p2) := (1, 1); // единицы для произведений
for var i := 2 to 10 do
begin
s1 += i;
p1 *= i;
s2 += 2 * i - 1;
p2 *= 2 * i - 1
end;
Writeln('Сумма равна ', s1, '/', s2, ' = ', s1 / s2);
Writeln('Произведение равно ', p1, '/', p2, ' = ', p1 / p2);
end.
Объяснение:
Прежде всепго, надо найти формулу для общего члена последовательности. После 2/3 следует 3/5, затем 4/7.
Видно, что числитель увеличивается на 1, знаменатель - на 2.
Конечный элемент 10/9 портит всю картину, он явно неверен. Если считать по числителям, в последовательности должно быть (10 - 2) + 1 = 9 членов. Тогда и в знаменателе должно быть не 9, а девятое нечетное число, начиная с 3, т.е. 19. Вся ясно, опечатка, пропущена 1.
Итак, можно написать цикл с параметром i, меняющимся от 2 до 10, а каждый член последовательности будет иметь вид i / (2×i-1).
Ну а сумма и произведение накапливаются в этом же цикле стандартным
Чтобы не терять точности вычислений, отдельно вычислим значения суммы и произведения в числителе и знаменателе, а затем выполним деление - единственную операцию, в которой можно потерять точность, если результат непредставим десятичной дробью с количеством цифр, не превыщающих 15 (это точность стандартной арифметики с плавающей точкой на компьютере).
При расчете произведения нужно понимать, что диапазон представления целых чисел в компьютере ограничен типом целочисленной переменной, выбранной для хранения произведения. Оценим максимальную величину произведения чисел по знаменателю, поскольку там значения больше. Будет вычисляться произведение 3×5×7×...×19. Грубо оценим по "серединке" значения этого ряда. (3+19)/2 = 11 и таких значений 9. 11⁹ > 10⁹ и опасно приближается к верхнему порогу допустимых значений 2.1×10⁹ для целщго типа integer, хранящегося у современных паскалей в 4-х байтах (а у старого ТурбоПаскаль вообше в двух). Поэтому для произведения лучше выбрать восьмибайтовое представление данных int64.
Получив ответ, мы видим, что на самом деле произведение равно 654729075, т.е. не превышает допустимого для integer порога. Но это мы теперь можем поумничать, зная результат.
1. Проектирование
Функциональные требования: определение цели разработки и исходных требований.
Анализ пользователей: определение потребностей пользователей, разработка сценариев, оценка соответствия сценариев ожиданиям пользователей.
Концептуальное проектирование: моделирование процесса, для которого разрабатывается приложение.
Логическое проектирование: определение информационных потоков в приложении.
Физическое проектирование: выбор платформы, на которой будет реализован проект и средств разработки.
2. Реализация
Прототипирование: разработка бумажных и/или интерактивных макетов экранных форм.
Конструирование: создание приложения с учетом возможности изменения его дизайна.
3. Тестирование
Юзабилити-тестирование: тестирование приложения различными пользователями, в т.ч. и пользователями с ограниченными возможностями