Помогите, пожалуйста! (Не представляю, в чём может быть дело)

Модератор: Модераторы разделов

Ответить
_Gleb_
Сообщения: 467
ОС: Kubuntu 12.04 LTS

Помогите, пожалуйста!

Сообщение _Gleb_ »

Проверка показывает, что во время исполнения вот этох семи строк кода:

Код: Выделить всё

for (i1=1; table[i1][0]!=0; i1++) {
          table[i1][2]=0;
              while ((n2%table[i1][0]==0) && (table[i1][2]<table[i1][1])) {
                table[i1][2]++;
                n2=n2/table[i1][0];
              }
        }

значения элементов в нулевой строке table[Х][0] забиваются какой-то ерундой. До этого момента проверка

Код: Выделить всё

for (i1=1; table[i1][0]!=0; i1++)
printf("%d\n", table[i1][0]);

выдаёт что-то совсем не правильное. Почему? Ведь эс этими элементами массива ничего не должно было произойти?
Изображение
Спасибо сказали:
Аватара пользователя
dey
Сообщения: 335
ОС: OpenSuse 11.1

Re: Помогите, пожалуйста!

Сообщение dey »

_Gleb_ писал(а):
24.12.2007 22:38
Проверка показывает, что во время исполнения вот этох семи строк кода:

Код: Выделить всё

for (i1=1; table[i1][0]!=0; i1++) {
          table[i1][2]=0;
              while ((n2%table[i1][0]==0) && (table[i1][2]<table[i1][1])) {
                table[i1][2]++;
                n2=n2/table[i1][0];
              }
        }

значения элементов в нулевой строке table[Х][0] забиваются какой-то ерундой. До этого момента проверка

Код: Выделить всё

for (i1=1; table[i1][0]!=0; i1++)
printf("%d\n", table[i1][0]);

выдаёт что-то совсем не правильное. Почему? Ведь эс этими элементами массива ничего не должно было произойти?


Непонятно в каком месте кода инициализируются эти элементы массива
В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Спасибо сказали:
_Gleb_
Сообщения: 467
ОС: Kubuntu 12.04 LTS

Re: Помогите, пожалуйста!

Сообщение _Gleb_ »

А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.
Изображение
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Помогите, пожалуйста!

Сообщение Фантом »

_Gleb_ писал(а):
24.12.2007 22:45
А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.


По этому куску все равно ничего не понять. Давайте листинг всей функции целиком.
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: Помогите, пожалуйста!

Сообщение Shura »

for (i1=1; table[i1][0]!=0; i1++)

Вот это место очень опасное - нет гарантии, что i1 не выйдет за пределы массива. И даже более того - выйдет (ведь за пределами массива врядли будут нули).
Rock'n'roll мертв © БГ
Спасибо сказали:
_Gleb_
Сообщения: 467
ОС: Kubuntu 12.04 LTS

Re: Помогите, пожалуйста!

Сообщение _Gleb_ »

Дело было в неправильной инициализации массива.
Изображение
Спасибо сказали:
Ответить