Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Var
- X: Array [1..30] Of Real;
- {Объявлен массив X на 30 значений, как и требовалось в условии.}
- Y, T: Real; I, II, S: Integer;
- {Y - служит как переменная Y, аналогично приведенному в условии примеру
- T - временная переменная, служит для расчета произведения на каждом из этапов
- I - переменная - индекс для массива X. Будет активно использоваться для манипулирования
- массивом в циклах For.
- II - вспомогательный индекс для массива X, именно по нему будет производится расчет произведения
- элементов ряда на каждом шаге.
- S - переменная, служащая для формирования знака полученного произведения ряда. По условию, нам требуется
- каждый шаг менять знак с + на -. Путем домножения произведения на S, которая принимает значения 1 и -1,
- мы получаем произведение с нужным знаком.}
- Begin
- Randomize;
- {Сгенерировали начальное число для генератора случайных чисел. Эту строку можно вообще удалить из программы, т.к в ней случайные числа не используются.}
- {Цикл внизу служит для ввода в массив X начальных значений. Ибо после запуска программы все переменные в
- массиве X равну нулю, и производить какие-либо вычисления бессмысленно.}
- For I:= 1 To 30 Do Begin {Для каждого элемента массива X, с 1 по 30-ый:}
- Write('X[', I, ']='); {Вывести на экран строку - приглашение для ввода текущего элемента массива}
- ReadLn(X[I]); {Прочитать ввод пользователя переменной с клавиатуры.}
- End;
- {Начальные значения, ряд начинается со значения X[1], оно сразу-же отправляется в переменную Y
- первым действитем мы будем вычитать. Поэтому, переменной S присваивается значение -1. Как работает
- переменная S, и ее назначение были описаны выше.}
- S:= -1; Y:= X[1];
- {Тут у нас двойной цикл. Для решения задачи, требуется пройти по массиву X, начиная со второго элемента,
- и до последнего. На каждой итерации цикла нужно подсчитать произведение всех элементов массива, вполть
- до текущего элемента. Поэтому, это произведение считается во вложенном цикле}
- For I:= 2 To 30 Do Begin
- T:= 1; {Переменная T будет хранить промежуточный результат подсчитанного произведения. Начинаем с 1,
- т.к если она будет равно 0, то при уможении ее на что-либо будет получаться 0, а это нас не устраивает.}
- For II:= 1 To I Do T:= T * X[II];
- {Простой вложенный цикл, считает произведение всех элементов массива, вполть до текущего.
- Наружный цикл крутится с I = от 2 до 30. Допустим, если сейчас I = 5, то внутренний цикл подсчитает
- произведения элементов массива с первого по пятый.}
- Y:= Y + T * S; S:= -S;
- {Суммируем полученное произведение с учетом нужного знака (домножение на S, которая или 1, или -1}
- {После меняем знак S на противоположный.}
- End;
- {После отработки циклов значение Y подсчитано. Остается вывести его на экран.
- ReadLn служит для того, чтобы задать паузу до нажатия на Enter. Некоторые среды разработки могут сразу
- закрыть окно результатов, что не очень удобно.}
- WriteLn('Y = ', Y:7:7);
- ReadLn;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement