Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 87, средняя оценка - 4.83
BDL3
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 36
#1

Ошибка в программе: Assignment to FOR-Loop variable 'i' - Delphi

26.05.2012, 12:29. Просмотров 13679. Ответов 4
Метки нет (Все метки)

Задача: Дан массив случайных чисел. Нужно найти макс. и мин. элемент и поменять их местами. Так вот, в этом фрагменте программы:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
imin:=0;
    imax:=0;
    for i:= 0 to (n-1) do
    begin
       if x[i]<a[imin] then
           begin
              imin:=i;             
           end;
       if x[i]>a[imax] then
           begin
              imax:=i;
           end;
а именно в строке for i:= 0 to (n-1) do выдает ошибку: [DCC Error] Unit1.pas(47): E2081 Assignment to FOR-Loop variable 'i'
подскажите что делать? как от этой ошибки избавиться? или как по другому код написать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2012, 12:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в программе: Assignment to FOR-Loop variable 'i' (Delphi):

Ошибка Assignment to FOR-Loop variable - Delphi
for ko := 0 to 3 do begin ko:=ko*4; for i:=ko to ko+3 do RadioGroup1.Items:=listbox2.Items; ...

Ошибка Assignment t o FOR-Loop variable при при присваивании переменной значения - Delphi
При написании программы вылезла ошибка: ... (137): Assignment t o FOR-Loop variable 'i'. Я не могу понять почему. Вот код: public ...

Ошибка: For loop control variable must be simple local variable - Delphi
Добрый день , дело вот в чем , написал я процедурку : procedure TForm1.DrawClock; var t:TDateTime; Color : TColor; ...

Ошибка For loop control variable must be simple local variable - Delphi
Добра всем! Ошибка, указанная в топике темы, возникает в таком контексте: function ParseMath (commands : String) : TStringArray; ...

Illegal assignment to for-loop, ошибка в цикле - Delphi
Помогите,не могу понять в чем ошибка, пишет illegal assignment to for-loop variable j - строка 126 Что там такое: unit Unit1; ...

Ошибка "For loop control variable must be simple local variable" - Delphi
Товарищи,по какой причине в заданной функции невозможно деление, при умножении программа работает, выдает ошибку grfunc_.pas(101): For...

4
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
26.05.2012, 13:10 #2
Именно в этом фрагменте всё нормально. Покажи, как ты описываешь переменную i. И немного больше кода впереди. Может быть цикл в цикле, и во внешнем цикле тоже эта переменная используется.
1
Somebody
2792 / 1603 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 3
26.05.2012, 13:11 #3
Наверное, этот цикл внутри другого цикла, в котором переменная - тоже i. Если так, используй другую.
1
BDL3
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 36
26.05.2012, 17:49  [ТС] #4
Цитата Сообщение от Одиночка Посмотреть сообщение
Именно в этом фрагменте всё нормально. Покажи, как ты описываешь переменную i. И немного больше кода впереди. Может быть цикл в цикле, и во внешнем цикле тоже эта переменная используется.
вот, смотри, побольше захватил:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Begin
  for i := 0 to n do
  begin
    randomize;
    imin:=0;
    imax:=0;
    for i:= 0 to (n-1) do
    begin
       if x[i]<a[imin] then
           begin
              imin:=i;
              end;
       if x[i]>a[imax] then
           begin
              imax:=i;
              end;
Добавлено через 2 минуты
все, сделал, просто цикл до нахождения мин. и макс. закрыл, и нормально стало
Delphi
1
2
3
4
5
6
7
8
9
10
11
Begin
  for i := 0 to n do
  begin
   randomize;
    imin:=0;
    imax:=0;
    end;
    for i:= 0 to (n-1) do
    begin
       if x[i]<a[imin] then
           begin
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
26.05.2012, 18:04 #5
Ну конечно в одном цикле используешь переменную i и во внутреннем тоже. Используй во внутреннем цикле другую переменную:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  for i := 0 to n do
  begin
    randomize;
    imin:=0;
    imax:=0;
    for j:= 0 to (n-1) do
    begin
       if x[j]<a[imin] then
           begin
              imin:=j;
              end;
       if x[j]>a[imax] then
           begin
              imax:=j;
              end;
Хотя не зная логики работы, не скажешь, как именно нужно делать.

Добавлено через 1 минуту
Пока писал, ты там добавление сделал. Это бред. Ты в цикле одним и тем же переменным присваиваешь одно и то же значение.

Добавлено через 12 минут
Вот как нужно делать:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Begin
  randomize;
  for i := 0 to n do x[i]:=Random(100); //Заполняем массив
  imin:=0;
  imax:=0;
  //Ищем минимальный и максимальный элементы...
  for i:= 1 to n do
  begin
     if x[i]<x[imin] then imin:=i;
     if x[i]>x[imax] then imax:=i;
  end;
  //Меняем местами...
  i:=x[imin];
  x[imin]:=x[imax];
  x[imax]:=i;
End;
1
26.05.2012, 18:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2012, 18:04
Привет! Вот еще темы с ответами:

Ошибка: "For loop control variable must be simple local variable" - Delphi
unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdMessage,...

Ошибка: "for loop control variable must be simple local variable" - Delphi
как избежать эту ошибку, если массив динамический? procedure TForm1.Button3Click(Sender: TObject); begin randomize; ...

Ошибка For loop control must be simple local variable - Delphi
Появляется в 133 и 134 строке. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Исправить ошибку For loop control variable must be simple local variable - Delphi
var q,s,n:integer; a:array of integer; i:integer; Form1: TForm1; implementation {$R *.dfm} procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru