6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
||||||
1 | ||||||
Потерялся в двумерном массиве13.08.2016, 19:47. Показов 1260. Ответов 15
Метки нет (Все метки)
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 А должно быть так. 0 1 2 3 0 1 2 3 0 1 2 4 0 1 3 4 0 2 3 4 1 2 3 4 И почему если помнять int a[m][n] на int a[n][m] то ничего не меняется?
0
|
13.08.2016, 19:47 | |
Ответы с готовыми решениями:
15
Min в двумерном массиве Указатели в двумерном массиве Палиндром в двумерном массиве Указатели в двумерном массиве |
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
|
||||||
13.08.2016, 21:18 | 3 | |||||
1
|
6 / 6 / 7
Регистрация: 07.08.2016
Сообщений: 44
|
|||||||||||
13.08.2016, 22:50 | 4 | ||||||||||
MansMI, Doctor123, присоединяюсь к вышеизложенному.
Причина в том, что вы объявили массив, так, что у вас "m" - строки, "n" - столбцы.
Данный фрагмент должен выглядеть так:
Добавлено через 3 минуты Причина этого всё та же. У вас получается, что количество строк - 4("n"), а количество столбцов - 6("m"), как у вас и вышло при компиляции.
1
|
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
||||||
14.08.2016, 15:01 [ТС] | 5 | |||||
0 1 2 3 0 1 2 3 0 1 2 4 0 1 3 4 1 2 3 4 1 2 3 4
0
|
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
|
|
14.08.2016, 15:20 | 6 |
Я испугался, что у меня глючит компилятор MSVC 6.0
До упора пытался найти ошибку в простейшем коде, но списал на глюк. Думал у Вас такого не будет. Попробую отыскать сегодня - это становится очень интересно. Настоящий полтергейст.
0
|
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
|
14.08.2016, 15:32 [ТС] | 7 |
Вот и я не пойму, интересное дело если написать допустим x = 8 то результат не меняется.
0
|
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
|
||||||
15.08.2016, 01:03 | 8 | |||||
Если увеличить размерность массива, то ошибка пропадёт.
Может быть при увеличении счётчика цикла выше допустимого. Но как происходит запись в массив, ведь тело цикла не должно выполняться свыше положенного числа. Такое врятли ещё в жизни встретится, но это желательно понять, что бы не сомневаться в том, что уже казалось "переваренным".
1
|
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
|
15.08.2016, 16:55 [ТС] | 9 |
Понял, что ничего не понял
1
|
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
|
|
15.08.2016, 17:12 | 10 |
Спасибо за интересный вопрос.
Я сам до конца не разобрался, как происходит переполнение строк (столбцов) массива. Похоже на побочное влияние оператора цикла FOR Если руки дойдут, попробую Ваш парадоксальный пример разглядеть в своём мониторе-отладчике "UniMons". И выложу результаты здесь на всеобщее рассмотрение. Но не обещаю, так как времени уже потратил немало.
0
|
6 / 6 / 7
Регистрация: 07.08.2016
Сообщений: 44
|
|||||||||||||||||||||||||||||||
15.08.2016, 17:31 | 12 | ||||||||||||||||||||||||||||||
Сообщение было отмечено Overloading как решение
Решение
Overloading, меня больше удивляет тот факт, что вы так паритесь. Зачем? Вы хотите понять как работают двумерные массивы? Я объясню.
Какой смысл делать так:
Второе.
Объясняю понятней.
Но затем вы выводите его как:
Ну и наконец, правильный код должен был выглядеть вот так:
1
|
22 / 22 / 8
Регистрация: 03.12.2013
Сообщений: 193
|
||||||
15.08.2016, 17:42 | 13 | |||||
Всё, я понял.
За всё это время я не заметил, что размерность (строки и столбцы) поменяны местами. Стояло int a[6][4], а нужно написать так int a[4][6] Вот теперь нет никаких переполнений и глюков:
0
|
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
||||||
15.08.2016, 18:00 [ТС] | 14 | |||||
Вот исправил, перепутал местами m и n, теперь все работет правильно.
0
|
6 / 6 / 7
Регистрация: 07.08.2016
Сообщений: 44
|
|
15.08.2016, 18:05 | 15 |
_Ivana,
0
|
6 / 6 / 1
Регистрация: 05.06.2016
Сообщений: 61
|
|
15.08.2016, 18:08 [ТС] | 16 |
0
|
15.08.2016, 18:08 | |
15.08.2016, 18:08 | |
Помогаю со студенческими работами здесь
16
Функции в двумерном массиве Строки в двумерном массиве В двумерном массиве подсчитать Динамика в двумерном массиве Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |