Нужен гуру в информатике, очень нужна помощь.
1.Ниже представлен фрагмент программы, в которой описан одномерный целочисленный массив A и обрабатываются элементы массива с индексами от 1 до 10.
n:=10;
for i:=1 to n do begin
A[n+1-i]:=2*A[i];
end;
Перед началом выполнения фрагмента элементы массива имеют значения соответственно 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, т. е. A[1] = 1; A[2] = 2 и т. д.
Укажите наибольшее значение, которое после выполнения указанного фрагмента программы имеют рассмотренных в этом фрагменте элемента массива. Если таких чисел несколько, укажите наибольшее из них
2.Программист написал программу суммирования элементов массива, но допустил в ней ошибку.
Program summa;
const n=10;
var a: array [1..n] of integer;
s, i: integer;
begin s:=0;
for i:=1 to n do
begin
readln(a[i]);
s:=s+i
end;
writeln('s=', s)
end.
Чему будет равно s в результате выполнения этой программы, если в качестве элементов массива ввести числа: 1, –2, 3, –4, 5 , –6, 7, –8, 9, –10?
3.Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n>0 then begin
F(n-2);
F(n div 2);
end
end;
Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(5)?
4.Дан рекурсивный алгоритм:
function F(n: integer): integer;
begin
if n>2
then F:=F(n-1)+F(n-2)
else F:=n;
end;
Чему будет равно значение, вычисленное алгоритмом при выполнении вызова F(3)?
5.Задан массив X[1..N]. Какое условие надо поставить вместо многоточия, чтобы в результате в переменную i был записан номер элемента, равного R? Вводите ответ без лишних пробелов и скобок.
i:=1;
while (i<=N) and ( ... ) do
i:=i+1;
Посмотрим, как изменяются элементы массива A при выполнении указанного фрагмента программы:
A[10+1-1] = A[10] = 2 * A[1] = 2 * 1 = 2
A[10+1-2] = A[9] = 2 * A[2] = 2 * 2 = 4
A[10+1-3] = A[8] = 2 * A[3] = 2 * 3 = 6
...
A[10+1-10] = A[1] = 2 * A[10] = 2 * 10 = 20
Таким образом, наибольшее значение, которое получит элемент массива, это 20.
В программе происходит ошибка в суммировании. Вместо суммирования значений элементов массива переменная s суммирует индексы элементов. Правильный вариант программы должен выглядеть так:
Program summa;
const n = 10;
var a: array [1..n] of integer; s, i: integer;
begin
s := 0;
for i := 1 to n do
begin
readln(a[i]);
s := s + a[i]; // Исправлено суммирование значений элементов массива
end;
writeln('s=', s)
end.
После исправления программа будет суммировать значения элементов массива, введенных пользователем, и выведет результат.
Вызов F(5) приведет к следующим выводам звездочек:
F(5) вызывает F(3) и F(2)
F(3) вызывает F(1) и F(1)
F(1) и F(2) выводят по одной звездочке каждая
Итого, будет напечатано 3 звездочки.
Вызов F(3) приведет к вычислениям следующим образом:
F(3) = F(2) + F(1)
F(2) = F(1) + F(0) = 1 + 0 = 1
F(1) = 1 (по определению)
Итак, F(3) = 1 + 1 = 2.
Чтобы найти номер элемента, равного R, вместо многоточия нужно поставить условие, проверяющее равенство текущего элемента массива R:
i := 1;
while (i <= N) and (X[i] <> R) do // Добавлено условие равенства текущего элемента массива R
i := i + 1;
Таким образом, когда встретится элемент массива, равный R, цикл завершится, и в переменную i будет записан его номер.