2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
||||||
1 | ||||||
Выяснить, имеются ли в матрице ненулевые элементы и, если имеются, вывести их индексы26.04.2014, 17:57. Показов 1692. Ответов 15
Метки нет (Все метки)
Здравствуйте. Задача следующая - дается матрица n x n (n=1...15). Необходимо выяснить, имеются ли в матрице ненулевые элементы и, если имеются, вывести их индексы.
Я составил программу, которая создает матрицу, заполняет ее случайными числами и ищет среди них отличные от нуля. Так же она должна вроде бы как выводить индексы этих ненулевых элементов, но каждый раз, если такие элементы имеются, программа выводит следующие числа: i=2686780 j=2686776 Не понимаю, в чем ошибка, ведь максимальный возможный индекс может быть 15x15, а тут получается 2686780 x 2686776. Нужна ваша помощь, чтобы вставить в программу фрагмент, при помощи которого на экран бы выводились индексы ненулевых элементов массива. Ниже приведена составленная мною программа:
0
|
26.04.2014, 17:57 | |
Ответы с готовыми решениями:
15
Построить матрицу , Выяснить имеются ли в матрице нулевые элементы. Если имеются, то вывести их индексы Выяснить, имеются ли в заданных матрицах ненулевые элементы. Если имеются, то указать их индексы Выяснить, имеются ли в матрице ненулевые элементы Выяснить, имеются ли в матрице ненулевые элементы |
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|||||||||||
26.04.2014, 18:10 | 2 | ||||||||||
0
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
|
26.04.2014, 18:13 [ТС] | 3 |
pav1uxa, тогда получается, что выводятся не индексы элементов, а то число, которое я ввожу (то есть число n, задающее порядок матрицы).
0
|
7 / 4 / 14
Регистрация: 05.02.2014
Сообщений: 131
|
|
26.04.2014, 18:44 | 4 |
zaqwerty, через цикл ищи все числа равные 0, запоминай их индексы и выводи значения с нужными индексами
0
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
|
26.04.2014, 18:58 [ТС] | 5 |
Fear1911, мне нужно не сами значения элементов вывести, а их индексы. Хотя, возможно, я не все понимаю, можно поподробнее?
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
||||||
26.04.2014, 18:59 | 6 | |||||
Сообщение было отмечено zaqwerty как решение
Решение
А так вы вообще выводите ссылку на переменные i и j, судя по заданию Вам это точно не надо) Я лишь показал как правильно функцией printf отображать значение переменных. Чтобы увидеть индексы всех ненулевых элементов массива, достаточно засунуть строки
1
|
7 / 4 / 14
Регистрация: 05.02.2014
Сообщений: 131
|
|
26.04.2014, 19:01 | 7 |
zaqwerty, да, не понимаешь, перечитай.
если нужно вывести индексы, так выводи индексы)
0
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
||||||
26.04.2014, 19:36 [ТС] | 8 | |||||
Fear1911, pav1uxa, у меня получился такой код:
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|||||||||||
26.04.2014, 19:50 | 9 | ||||||||||
Почему при заполнении у Вас
1
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
|||||||||||
26.04.2014, 20:16 [ТС] | 10 | ||||||||||
pav1uxa, то есть нужно оставить так?
62 7 38 69 Все эти элементы отличны от нуля, то есть программа должна вывести следующее: i=1 j=1 i=1 j=2 i=2 j=1 i=2 j=2 Но она выводит следующее: i=0 j=0 i=0 j=1 i=1 j=0 i=1 j=1 Добавлено через 2 минуты Я понял, здесь ноль принимается за первую строку, а единица - за вторую строку. Но как тогда привести к тому, чтобы первая строка обозначалась единицей, а не нулем, а вторая - двойкой, а не единицей? Добавлено через 4 минуты Как я думаю, нужно оставить так:
Добавлено через 7 минут Да, все получилось. Спасибо за помощь)
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|
26.04.2014, 20:31 | 11 |
Конечно ошибаетесь. Вы задаете элементы массива начиная с нулевого. Так почему Вы хотите проверять их начиная с первого?
Если n = 15, то for (i=0; i<n; i++) это 15 итераций for (i=1; i<n; i++) это 14 итераций (то есть первую строку и столбец вы не проверяете вообще в таком случае) Добавлено через 11 секунд Все правильно выводит.
0
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
|
26.04.2014, 20:34 [ТС] | 12 |
pav1uxa, почему же, я же пишу
for(i=1; i<=n; i++) for(j=1; j<=n; j++) Прошу обратить внимание на то, что i<=n, а не i<n. Тогда получится как раз 15 интераций
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|||||||||||
26.04.2014, 20:47 | 13 | ||||||||||
Но ведь когда устанавливаете массив у вас i=0 j=0.
В общем в таких случаях все-таки лучше всего использовать
1
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
||||||
27.04.2014, 09:19 [ТС] | 14 | |||||
pav1uxa, извините, забыл сказать, что использовал этот цикл не только при выводе индексов, но и при составлении матрицы:
0
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
||||||
27.04.2014, 12:40 | 15 | |||||
Просто дело в том, что вот эти строки
1
|
2 / 2 / 2
Регистрация: 14.12.2013
Сообщений: 120
|
|
29.04.2014, 15:59 [ТС] | 16 |
pav1uxa, да, так и есть - при введении пятнадцати программа выдает ошибку. Сейчас внесу изменения. Спасибо
0
|
29.04.2014, 15:59 | |
29.04.2014, 15:59 | |
Помогаю со студенческими работами здесь
16
Выяснить, имеются ли в матрице ненулевые элементы Выяснить имеются ли в матрице ненулевые элементы Выяснить, имеются ли в матрицах ненулевые элементы Имеются ли в матрице ненулевые элементы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |