Определить функцию фрагмента алгоритма, записать его кратко, а также выполнить его трассировку при указанных начальных данных:
х:=a[0]; for i:=1 to n do x:=x*s+a[i]; writeln(x);.
Начальные данные:
n=4, a[i]=i, s=2, i=0, 1, 2, 3, 4
.
Указание: вспомнить схему Горнера.
Фрагмент алгоритма вычисляет n-е частичные суммы ряда
Оператор | Условие | i | x | Примечание |
---|---|---|---|---|
х:=a[0] |
0 | 0 | ||
for i:=1 to n do |
Да | 1 | ||
x:=x*s+a[i] |
1 | 0 · 2 + 1 | ||
for i:=1 to n do |
Да | 2 | ||
x:=x*s+a[i] |
4 | 1 · 2 + 2 | ||
for i:=1 to n do |
Да | 3 | ||
x:=x*s+a[i] |
11 | 4 · 2 + 3 | ||
for i:=1 to n do |
Да | 4 | ||
x:=x*s+a[i] |
26 | 11 · 2 + 4 | ||
for i:=1 to n do |
Нет | 5 | ||
writeln(x) |
На экране: 26 |
Задать некоторый массив х небольшой размерности и определить, чему будет равно значение переменной s после завершения фрагмента программы:
i:=1; j:=1; s:=0; while ((i<n) and (x[i,j]>0)) do begin j:=i; while ((j<m) and (x[i,j]>0)) do begin s:=s+x[i,j]; j:=j+1; end; i:=i+1; end;?
Указание: задайте, например, массив из чисел
x[i,j]=i+j, i=1, 2; j=1, 2, 3.
Зададим массив из чисел
x[i,j]=i+j, i=1, 2; j=1, 2, 3.
Данный фрагмент вычисляет в матрице сумму элементов, расположенных на первой диагонали до первого такого элемента, меньшего или равного нулю, кроме последнего элемента этой диагонали.
Для заданного массива:
s=2.
Составить алгоритм нахождения произведения всех чисел,
превышающих среднее геометрическое заданного ряда вещественных чисел.
Указание: сначала найти среднее геометрическое элементов ряда - оно
равно корню степени
n
от произведения таких чисел, где
n
- количество таких чисел.
p:=1; for i:=1 to n do p:=p*a[i]; s:=exp(ln(p)/n); p1:=1; for i:=1 to n do begin if a[i]>s then p1:=p1*a[i] end; writeln(p1);
s
- среднее геометрическое;
p1
- искомое произведение. Корень степени
n
ищется с помощью конструкции
s:=exp(ln(p)/n);
,
поскольку такого оператора в Паскале нет.