Модератор: Модераторы разделов
_Gleb_
Сообщения: 467
ОС: Kubuntu 12.04 LTS
Сообщение
_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]);
выдаёт что-то совсем не правильное. Почему? Ведь эс этими элементами массива ничего не должно было произойти?
dey
Сообщения: 335
ОС: OpenSuse 11.1
Сообщение
dey » 24.12.2007 22:44
_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
Сообщение
_Gleb_ » 24.12.2007 22:45
А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.
Фантом
Сообщения: 452
ОС: openSUSE
Сообщение
Фантом » 26.12.2007 15:53
_Gleb_ писал(а): ↑ 24.12.2007 22:45
А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.
По этому куску все равно ничего не понять. Давайте листинг всей функции целиком.
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2
Сообщение
Shura » 26.12.2007 18:10
for (i1=1; table[i1][0]!=0; i1++)
Вот это место очень опасное - нет гарантии, что i1 не выйдет за пределы массива. И даже более того - выйдет (ведь за пределами массива врядли будут нули).
Rock'n'roll мертв © БГ
_Gleb_
Сообщения: 467
ОС: Kubuntu 12.04 LTS
Сообщение
_Gleb_ » 27.12.2007 13:25
Дело было в неправильной инициализации массива.