Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/47: Рейтинг темы: голосов - 47, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 4

Ошибка: Нельзя изменять значение переменной цикла внутри этого цикла

25.01.2014, 13:13. Показов 9437. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
при запуске в строке If i=k Then i:=i+1; выдает ошибку "Нельзя изменять значение переменной цикла внутри этого цикла". Объясните почему вылетает эта ошибка, по возможности исправьте. Спасибо

Текст программы

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
program labI4(input,output);
Uses crt;
Label m1;
Var   a,a5: array [1..25,1..25] of real;
      b,b5: array [1..25] of real;
      k,i,m,n,st:integer;
      t,x:real;
BEGIN
 clrscr;
 write('Vvedite razmernost');
 readln(n);
 For i:=1 to n do
 For k:=1 to n do begin
  write('a[',i,',',k,']=');readln(a[i,k]);a5[i,k]:=a[i,k];
 end;
 writeln('Vvedite svobodnye chleny B');
 For i:=1 to n do begin
  write('b[',i,']=');readln(b[i]);b5[i]:=b[i];
 end;
 writeln('Nachalnaya matriza');
 For i:=1 to n do begin
  For k:=1 to n do begin
   write('a[',i,',',k,']=',a[i,k]:5:2,'':4);
  end;
  writeln('b[',i,']=',b[i]:5:2,'':4);
 end;
 readln;
 For k:=1 to n do begin
  st:=k;
  For i:=k to n do
   If a[st,k]<=a[i,k] Then st:=i;
  For i:=1 to n do begin
   t:=a[k,i];
   a[k,i]:=a[st,i];
   a[st,i]:=t;
  end;
  t:=b[k];
  b[k]:=b[st];
  b[st]:=t;
  For i:=1 to n do begin
   If i=k Then i:=i+1;
   If i=n+1 Then goto m1;
   t:=a[i,k]/a[k,k];
   For m:=1 to n do
    a[i,m]:=a[i,m]-t*a[k,m];
   b[i]:=b[i]-t*b[k];
  end;
  m1:
 end;
 writeln(' Konechnaya matriza');
 For i:=1 to n do begin
  For k:=1 to n do begin
   write('a[',i,k,']=',a[i,k]:5:2,'':4);
  end;
  writeln('b[',i,']=',b[i]:5:2,'':4);
 end;
 readln;
 For k:=1 to n do begin
  x:=b[k]/a[k,k];
  writeln('x(',k,')=',x:5:2);
  a[1,k]:=x;
 end;
 readkey
END.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2014, 13:13
Ответы с готовыми решениями:

Ошибка: Нельзя изменять значение переменной цикла внутри этого цикла
при запуске в цикле while в строке x:=x div 10; выдает ошибку &quot;Нельзя изменять значение переменной цикла внутри этого цикла&quot;,...

Что означает "Нельзя изменять значение переменной цикла внутри этого цикла"?
Собственно, сама программа. {Дана целочисленная матрица Aij i=1..n,j=1..m (n,m&lt;=100). Найти наибольший и наименьший по абсолютной...

Ошибка "нельзя изменять значение переменной цикла внутри цикла"
пишет, что &quot;нельзя изменять значение переменной цикла внутри этого цикла&quot; var a,c:array of integer; i,j:integer; min:integer; begin ...

4
 Аватар для ermolay
3451 / 2389 / 2135
Регистрация: 04.12.2011
Сообщений: 3,966
25.01.2014, 18:36
Цитата Сообщение от z58 Посмотреть сообщение
Объясните почему вылетает эта ошибка
Потому что
Цитата Сообщение от z58 Посмотреть сообщение
Нельзя изменять значение переменной цикла внутри этого цикла
Здесь переменная i - управляющая переменная, изменение значения переменной i предопределено, и должно изменяться на единицу при каждом прохождении цикла.
Для других изменений переменной внутри цикла можно использовать вместо цикла For цикл while или repeat

Цитата Сообщение от z58 Посмотреть сообщение
по возможности исправьте
А что должна делать программа? Какое задание (полное и точное)? Вы используете goto, а это не очень хорошо, по возможности этого нужно избегать.
0
0 / 0 / 0
Регистрация: 25.01.2014
Сообщений: 4
26.01.2014, 00:52  [ТС]
решение слау методом гаусса-жордана
0
0 / 0 / 0
Регистрация: 15.11.2015
Сообщений: 1
15.11.2015, 20:22
Цитата Сообщение от ermolay Посмотреть сообщение
Потому что
Нельзя изменять значение переменной цикла внутри этого цикла
Здесь переменная i - управляющая переменная, изменение значения переменной i предопределено, и должно изменяться на единицу при каждом прохождении цикла.
Для других изменений переменной внутри цикла можно использовать вместо цикла For цикл while или repeat
В TurboPascal переменную цикла можно было менять внутри самого цикла, при этом всё отрабатывало корректно. В PascalABC зачем-то сделали по-другому. Непонятное решение, как по мне.
0
Модератор
10428 / 5716 / 3404
Регистрация: 17.08.2012
Сообщений: 17,380
16.11.2015, 02:19
Цитата Сообщение от LazyMe Посмотреть сообщение
Непонятное решение
Вообще-то, это в TurboPascal'е борландовцы отсебятину сделали. А вот в этом уродце PascalABC, при всём моём к нему неуважении, алгоритм работы цикла for приведён в соответствие с тем, как его описал Никлаус Вирт, и да пусть даст ему Бог здоровья и долгих лет жизни.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2015, 02:19
Помогаю со студенческими работами здесь

Ошибка: "Нельзя изменять значение переменной цикла внутри этого цикла"
&quot;Нельзя изменять значение переменной цикла внутри этого цикла&quot;. Выдает вот такую ошибку в 37 строчке. Помогите исправить Program...

Нельзя изменять значение переменной цикла внутри этого цикла
function factorial(x:integer):integer; begin var i,var1:integer; for i:=1 to x do begin var1:=1; var1:=var1*i; i:=i+1; end; ...

Паскаль выдает Ошибку "Нельзя изменять значение переменной цикла внутри этого цикла"
Здравствуйте, мне задали задание в колледже написать программу 3 разными способами While do,Repeat Until, и for. Если с While do, Repeat...

"Нельзя изменять значение переменной цикла внутри этого цикла"
Задача программы - проверить знание слов-антонимов. A-массив в вопросами B-массив с ответами C-массив для счета k-счетчик...

Изменение начального положения цикла внутри этого цикла
есть два маппинга в одном 180000 строк в другом 85000 нужно один прогнать по другому на сопоставление по определенному полю, оба столбца...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru