Program while_repeat_for;
var
i:array[0..2] of integer;
begin
i[1] := 1;
i[2] := 1;
while i[1]<=10 do //пока условие не станет ложным (11<=10)
begin
i[1] := i[1]+1;
end;
Writeln('Операция while выполнена ',i[1],' раз');
repeat
i[2]:= i[2]+1
until i[2]>=10;//пока условие не станет истинным (10<=10)
Writeln('Операция repeat выполнена ',i[2],' раз');
for i[0]:=1 to 10 do
Writeln('Операция repeat выполнена ',i[0],' раз');
end.
Ошибка встречано [ а ожидалось ;
Другие языки программирования и технологии
цикл for не может обрабатывать массивы? (паскаль)
Сможет - если ты возьмёшь компилятор, разрешающий использовать элемент массива в качестве индекса цикла for.
Например, gpc это разрешает, а free pascal - нет.
Например, gpc это разрешает, а free pascal - нет.
Лучше проверь, все ли "семиколоны" (;) стоят в тексте!
Владимир Краснокутский
Разве нет?
Потому, что у вас не просто „паскаль“, а PascalABC.Net, в котором не всё как должно быть!
Ему нужен порядковый тип… А почему i[0] не является порядковым — это загадка.
Эта фишка ещё с PABC без .Net тянется:

Ему нужен порядковый тип… А почему i[0] не является порядковым — это загадка.
Эта фишка ещё с PABC без .Net тянется:

проверь англ или русский
Владимир Краснокутский
что именно? Всё на английском вроде...
Вариантов циклов на то и несколько, чтобы их счётчики обрабатывались если не в одном варианте, так в другом! Например, у меня во FreePascalCompiler'e s:=0; for a[1]:=1 to 10 do s:=s+a[1]; writeln(s) приведёт к ошибке и компиляционному аборту, a в цикле s:=0; a[1]:=0; while a[1]<10 do begin a[1]:=a[1]+1; s:=s+a[1] end; writeln(s) всё нормально! На фри паскале, кстати сказать, циклы for ещё могут не работать со счётчиками целого восьмибайтного типа int64.
Да, так нельзя.
Если я правильно понял, что Вы хотите, предлагаю такое решение:
Program while_repeat_for;
var
i:array[0..2] of integer;
j:integer;
begin
i[1] := 1;
i[2] := 1;
while i[1]<=10 do //пока условие не станет ложным (11<=10)
begin
i[1] := i[1]+1;
end;
Writeln('Операция while выполнена ',i[1],' раз');
repeat
i[2]:= i[2]+1
until i[2]>=10;//пока условие не станет истинным (10<=10)
Writeln('Операция repeat выполнена ',i[2],' раз');
for j:=i[low(i)] to i[high(i)] do
Writeln('Операция repeat выполнена ',i[0],' раз');
end.
Если я правильно понял, что Вы хотите, предлагаю такое решение:
Program while_repeat_for;
var
i:array[0..2] of integer;
j:integer;
begin
i[1] := 1;
i[2] := 1;
while i[1]<=10 do //пока условие не станет ложным (11<=10)
begin
i[1] := i[1]+1;
end;
Writeln('Операция while выполнена ',i[1],' раз');
repeat
i[2]:= i[2]+1
until i[2]>=10;//пока условие не станет истинным (10<=10)
Writeln('Операция repeat выполнена ',i[2],' раз');
for j:=i[low(i)] to i[high(i)] do
Writeln('Операция repeat выполнена ',i[0],' раз');
end.
Похожие вопросы
- Цикл for в Дельфи или Паскале
- *.bat - Не работает set /a внутри цикла for!
- Цикл For в паскале
- Вопрос про цикл For
- Сортировка массива (Паскаль) помогите пожалуйста
- Задача массив. Паскаль.
- Задача на МАССИВЫ Паскаль ОЧЕНЬ СРОЧНО!!!!
- одномерные массивы паскаль
- Задачи на массив паскаль, помогите пожалуйста
- По-человечески объясните цикл "for"