0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
||||||
1 | ||||||
Рекурсивная функция, определяющая сумму элементов главной диагонали матрицы09.06.2016, 12:56. Показов 2562. Ответов 14
Метки нет (Все метки)
Доброго дня. Есть задание на лр-написать рекурсивную функцию, определяющую сумму элементов, лежащих на главной диагонали квадратной матрицы. Я написала программу, но в строчке вызова функции она выводит ошибку. Пожалуйста посоветуйте что исправить и вообще функция что я написала является рекурсивной? Прочитав в учебнике Т.А. Павловской где написан об этих функциях один абзац мне не совсем понятно. Т.е. Рекурсивная функция это функция которая вызывает саму себя, ну так и обычная функция вызывает саму себя, чего то я запуталась, если не трудно объясните на пальцах их различие. Заранее спасибо!
0
|
09.06.2016, 12:56 | |
Ответы с готовыми решениями:
14
Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали Найти сумму всех элементов главной диагонали матрицы, и сумму всех отрицательных элементов побочной диагонали Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали. |
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
||||||
09.06.2016, 13:47 | 2 | |||||
КсенияФокина, рекурсивная функция - это как-то так;
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
09.06.2016, 14:26 [ТС] | 3 |
а чем она от обычной отлиачется?
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
|||||||||||
09.06.2016, 15:05 | 4 | ||||||||||
КсенияФокина, ну, например.
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
10.06.2016, 09:01 [ТС] | 5 |
В рекурсивную функцию обязательно должно входит условие? т.е. она не может просто при вызове начать выполнять то что прописано в ее теле если не будет условия?
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
|
10.06.2016, 09:06 | 6 |
КсенияФокина, нет. У рекурсивной функции где-то в теле есть вызов себя же. То есть, обычная функция может просто выполняться, а может вызывать в своём теле какую-то другую функцию, но не себя. У рекурсивной же обязательно должен быть в теле вызов себя, на то она и рекурсивная. Она будет вызывать себя до определённого момента, который мы определим логикой программы, а потом будет возвращаться из всех вызовов. То есть, если наша функция называется, например, rec_func, то рекурсивной она будет тогда и только тогда, когда в её теле есть вызов функции rec_func.
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
10.06.2016, 09:09 [ТС] | 7 |
Я попробовала забить вашу рекурсивную функцию-что бы понять как она работает, поменять в ней что то , но она не работает(( на втором return выдает ошибку..
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
|
10.06.2016, 09:14 | 8 |
КсенияФокина, странно, у меня всё работало. Какая ошибка, на какую строчку жалуется?
Добавлено через 3 минуты КсенияФокина, у меня и сейчас всё работает. Если что, это не решение вашей задачи, я написал для одномерного массива просто как пример, а не для диагонали матрицы.
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
10.06.2016, 09:36 [ТС] | 9 |
Вот так понятнее, теперь осталось только реализовать это на практике)
Добавлено через 6 минут Нет ругаться перестала) теперь она работает но вызов функции не происходит, я в конце программы просто написала fun, понимаю что еще параметры нужно в скобках прописать, но что именно за параметры, до меня никак не дойдет) Добавлено через 1 минуту Я понимаю что это не решение) Но мне хоть понять, вот еще вопрос возник а зачем объявлять параметр а типом int*-это как указатель?
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
||||||
10.06.2016, 09:39 | 10 | |||||
КсенияФокина, в с++ массивы реализуются указателем на первый элемент массива, а в квадратных скобках мы показываем, насколько далеко надо от него отступить, так мы и получаем доступ к другим элементам.
Добавлено через 41 секунду А вот Ваша программа, тут и обычной функцией сумма подсчитывается, и рекурсивной.
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
10.06.2016, 09:59 [ТС] | 11 |
Спасибо за помощь. Для начала я решила не забивать 25,28,43 и 45 строчку. Если я правильно понимаю то это выделение памяти и ее удаление. Но без нее после ввода массива выдавало ошибку, о том что память не может быть read, потом я все таки забила эти строчки и теперь на строчке 25 он пишет мне, что time неизвестный идентификатор.
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
|
10.06.2016, 10:06 | 12 |
КсенияФокина, попробуйте подключить библиотеку ctime или time.h.
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
|
10.06.2016, 12:16 [ТС] | 13 |
Спасибо за помощь. Для начала я решила не забивать 25,28,43 и 45 строчку. Если я правильно понимаю то это выделение памяти и ее удаление. Но без нее после ввода массива выдавало ошибку, о том что память не может быть read, потом я все таки забила эти строчки и теперь на строчке 25 он пишет мне, что time неизвестный идентификатор.
Добавлено через 7 минут Добавила #include <time.h> программа компилируеться, но после того как я забиваю массив выводит ошибку что память не может быть written
0
|
27 / 27 / 16
Регистрация: 18.05.2016
Сообщений: 128
|
|
10.06.2016, 12:20 | 14 |
КсенияФокина, Вы вводите данные после того, как память выделена?
0
|
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 18
|
||||||
10.06.2016, 15:00 [ТС] | 15 | |||||
Сейчас сделала без выделения памяти, выдает ошибку что память не может быть read, еще до того как начинаю забивать массив, то есть ctrl+f5 и сразу вылазиет окошко с ошибкой..
0
|
10.06.2016, 15:00 | |
10.06.2016, 15:00 | |
Помогаю со студенческими работами здесь
15
Вычислить сумму элементов матрицы над главной диагональю под главной диагональю и на главной диагонали Найти сумму элементов главной диагонали матрицы Найти сумму элементов главной диагонали матрицы Найти сумму элементов главной диагонали матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |