Объясните почему мы пишем for x:=1 to N-1 do if a[x]=a[x+1] then inc(k);
Почему там N-1 и a[x]=a[x+1]
uses crt;
const N=10;
var a:array [1..N] of integer;
x,k:integer;
begin
for x:=1 to N do
begin
a[x]:=random(5);
writeln('a[',x,']:',a[x]);
end;
for x:=1 to N-1 do
if a[x]=a[x+1] then inc(k);
if k>0 then writeln('Есть одинаковые соседние элементы.')
else writeln('Одинаковых соседних элементов нет.');
end.
for
примеры
(Pascal)
for i := 1 to 10 do
s:=s+1;
(C#,C++)
for (int i=0;i<10;i++) {
s+=i;
}
(Ruby)
for i in 1..10
s=s+i
end
(VB, VBA, Basic,..)
for i = 1 to 10
s=s+i
next i
По умлчанию шагом счетчика является 1. Обычно шаг счетчика можно менять фразой by или step by. Хотя увы такое есть не во всех языках
(C#,C++)
for (int i=0;i<10;i=i+2) {
s+=i;
}
(VB, VBA, Basic,..)
for i = 1 to 10 step by 2
s=s+i
next i
Например в паскале возможен только обратный отсчет
for i := 10 downto 1 do
s:=s+1;
еще for примечателен тем, что даже если конец меньше начала (в варианте увеличения счета), то цикл все равно пройдет один раз. Правда не знаю подпадают ли под это правило языки из группы С