Advertisement
Abaduaber

AnnPol_21

Dec 18th, 2012
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.98 KB | None | 0 0
  1. Var
  2.     X: Array [1..30] Of Real;
  3.     {Объявлен массив X на 30 значений, как и требовалось в условии.}
  4.     Y, T: Real; I, II, S: Integer;
  5.     {Y - служит как переменная Y, аналогично приведенному в условии примеру
  6.     T - временная переменная, служит для расчета произведения на каждом из этапов
  7.     I - переменная - индекс для массива X. Будет активно использоваться для манипулирования
  8.     массивом в циклах For.
  9.     II - вспомогательный индекс для массива X, именно по нему будет производится расчет произведения
  10.     элементов ряда на каждом шаге.
  11.     S - переменная, служащая для формирования знака полученного произведения ряда. По условию, нам требуется
  12.     каждый шаг менять знак с + на -. Путем домножения произведения на S, которая принимает значения 1 и -1,
  13.     мы получаем произведение с нужным знаком.}
  14. Begin
  15.     Randomize;
  16.     {Сгенерировали начальное число для генератора случайных чисел. Эту строку можно вообще удалить из программы, т.к в ней случайные числа не используются.}
  17.     {Цикл внизу служит для ввода в массив X начальных значений. Ибо после запуска программы все переменные в
  18.      массиве X равну нулю, и производить какие-либо вычисления бессмысленно.}
  19.     For I:= 1 To 30 Do Begin {Для каждого элемента массива X, с 1 по 30-ый:}
  20.       Write('X[', I, ']='); {Вывести на экран строку - приглашение для ввода текущего элемента массива}
  21.       ReadLn(X[I]); {Прочитать ввод пользователя переменной с клавиатуры.}
  22.     End;
  23.     {Начальные значения, ряд начинается со значения X[1], оно сразу-же отправляется в переменную Y
  24.      первым действитем мы будем вычитать. Поэтому, переменной S присваивается значение -1. Как работает
  25.      переменная S, и ее назначение были описаны выше.}
  26.     S:= -1; Y:= X[1];
  27.     {Тут у нас двойной цикл. Для решения задачи, требуется пройти по массиву X, начиная со второго элемента,
  28.      и до последнего. На каждой итерации цикла нужно подсчитать произведение всех элементов массива, вполть
  29.      до текущего элемента. Поэтому, это произведение считается во вложенном цикле}
  30.     For I:= 2 To 30 Do Begin
  31.       T:= 1; {Переменная T будет хранить промежуточный результат подсчитанного произведения. Начинаем с 1,
  32.       т.к если она будет равно 0, то при уможении ее на что-либо будет получаться 0, а это нас не устраивает.}
  33.       For II:= 1 To I Do T:= T * X[II];
  34.       {Простой вложенный цикл, считает произведение всех элементов массива, вполть до текущего.
  35.       Наружный цикл крутится с I = от 2 до 30. Допустим, если сейчас I = 5, то внутренний цикл подсчитает
  36.       произведения элементов массива с первого по пятый.}
  37.       Y:= Y + T * S; S:= -S;
  38.       {Суммируем полученное произведение с учетом нужного знака (домножение на S, которая или 1, или -1}
  39.       {После меняем знак S на противоположный.}
  40.     End;
  41.     {После отработки циклов значение Y подсчитано. Остается вывести его на экран.
  42.      ReadLn служит для того, чтобы задать паузу до нажатия на Enter. Некоторые среды разработки могут сразу
  43.      закрыть окно результатов, что не очень удобно.}
  44.     WriteLn('Y = ', Y:7:7);
  45.     ReadLn;
  46. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement