Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
nadyush-princes
2 / 2 / 1
Регистрация: 08.10.2011
Сообщений: 73
#1

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

20.10.2011, 08:59. Просмотров 5212. Ответов 2
Метки нет (Все метки)

при запуске в цикле while в строке x:=x div 10; выдает ошибку "Нельзя изменять значение переменной цикла внутри этого цикла", объясните пожалуйста, и по возможности исправьте..... буду оч благодарна. вот текст программы
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
{Подсчитать количество четных натуральных чисел, принадлежащих интервалу
 [ a , b ), у которых количество четных цифр больше количества нечетных цифр.}
 
 var a,b,d,x,y,j,k : integer; {j - количество четных цифр, k - нечетных, d - 
                             количество натуральных чисел}
 BEGIN
    writeln('Введите число а > ');
    readln(a);
    writeln('Введите число b > ');
    readln(b);
    j:=0;
    k:=0;
    d:=0;
    if ((a<0) or (b<0) or (a>b)) then  
       writeln('Числа a и b должны быть натуральными, причем a<b!')
       else begin
             for x:=a to b-1 do begin
                if (x mod 2 = 0) then begin
                      while x>0 do begin
                            y:=x mod 10;
                            if (y mod 2 =0) then
                               j:=J+1
                               else k:=k+1;
                            x:=x div 10;
                      end;
                end; 
                if j>k then 
                   d:=d+1;
             end; 
             writeln('Количество четных натуральных чисел, принадлежащих интервалу');
             writeln('[',a,';',b,'), у которых количество четных цифр больше количества');
             writeln('нечетных, равно ', d, ' ');
       end;
END.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2011, 08:59
Ответы с готовыми решениями:

Ошибка: Нельзя изменять значение переменной цикла внутри этого цикла
при запуске в строке If i=k Then i:=i+1; выдает ошибку &quot;Нельзя изменять...

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

Ошибка "нельзя изменять значение переменной цикла внутри цикла"
пишет, что &quot;нельзя изменять значение переменной цикла внутри этого цикла&quot; var...

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

Как прервать работу цикла for, если значение переменной достигло определенного значения?
В php знаю как остановить цикл, а в pascal нет. Подскажите.

2
Puporev
Модератор
54352 / 41944 / 28978
Регистрация: 18.05.2008
Сообщений: 98,798
20.10.2011, 09:12 #2
{Подсчитать количество четных натуральных чисел, принадлежащих интервалу
[ a , b ), у которых количество четных цифр больше количества нечетных цифр.}
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
uses crt;
 var a,b,d,x,x1,y,j,k : integer; {j - количество четных цифр, k - нечетных, d -
                             количество натуральных чисел}
 BEGIN
    writeln('Введите число а > ');
    readln(a);
    writeln('Введите число b > ');
    readln(b);
    if ((a<0) or (a>b)) then
    writeln('Числа a и b должны быть натуральными, причем a<b!')
    else
     begin
      d:=0;
      for x:=a to b-1 do
      if (x mod 2 = 0) then
       begin
        x1:=x;//нельзя издеваться над счетчиком цикла...
        j:=0;
        k:=0;
        while x1>0 do
         begin
          y:=x1 mod 10;
          if y mod 2 =0 then j:=J+1
          else k:=k+1;
          x1:=x1 div 10;
         end;
        if j>k then d:=d+1;
       end;
      writeln('Количество четных натуральных чисел, принадлежащих интервалу');
      writeln('[',a,';',b,'), у которых количество четных цифр больше количества');
      writeln('нечетных, равно ', d, ' ');
    end;
END.
1
nadyush-princes
2 / 2 / 1
Регистрация: 08.10.2011
Сообщений: 73
20.10.2011, 12:34  [ТС] #3
спасибо большое)))) с этой ошибкой все понятно))) осталось найти где я еще намудрила))))))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2011, 12:34

Счетчик внутри цикла
Var k1,k2,i,s: integer; // Procedure aaa(k1,k2:integer); Var ...

Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
program Khamkov8; const Z=5; M=6; var f,f1:text; c:array of integer; ...

Program1.pas(39) : Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
Program1.pas(39) : Параметр цикла for в PascalABC.NET должен описываться в...


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

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

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