// FreePascal
var
n, k, s: integer;
a: array of integer;
function IsPrime(n: integer): boolean;
var
i: integer;
begin
if n <= 1 then
Exit(False)
else
if n <= 3 then
Exit(True)
else
if (n mod 2 = 0) or (n mod 3 = 0) then
Exit(False);
i := 5;
while (i * i) <= n do
begin
if (n mod i = 0) or (n mod (i + 2) = 0) then
Exit(False);
i := i + 6;
end;
Exit(True);
end;
begin
s := 0;
write('n = ');
readln(n);
SetLength(a, n);
for k := 0 to (n - 1) do
begin
write('a[', k, '] = ');
readln(a[k]);
if IsPrime(k) then
s := s + a[k];
end;
writeln('Ответ: ', s);
end.
В ячейку B2 скопировалась формула =F$5-$D5 (Т.к. 5 _ D фиксированные, а смещение просиходит на 1 вправо и 1 вниз, меняются E на F и 4 на 5)
B2=30-24=6
Вы вводите символьную информацию (данное типа char) при помощи процедуры Read(). В языке Паскаль ввод должен ВСЕГДА завершаться посылкой пары кодов "перевод строки" и "возврат каретки", что и происходит при нажатии клавиши "Enter". Так, если Вы вводите латинское "А", программа получает не один символ, а три: с кодом "А", с кодом "перевод строки" и с кодом "возврат каретки". И чтение в цикле происходит сразу три раза до очередного обращения к клавиатуре. Итого получается четыре прохода по циклу: первые три символа на самом деле воспринимаются, как девять, а затем считывается четвертый, что дает десять и цикл завершается.
Для правильной работы с символьными данными (char, string) следует использовать не Read(), а Readln() и все у Вас получится. Процедура Readln() "отрезает" коды "перевод строки" и "возврат каретки".