0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
||||||
1 | ||||||
Сравнение двумерных матриц - разобрать код19.08.2014, 19:21. Показов 7014. Ответов 27
Метки нет (Все метки)
Разобрать суть кода, что в нем описанно, функций
0
|
19.08.2014, 19:21 | |
Ответы с готовыми решениями:
27
Сравнение двумерных массивов Перегрузка сложения для двумерных матриц Сравнение двух двумерных массивов Сравнение двух двумерных массивов |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
19.08.2014, 19:29 | 2 |
Пока модераторы не поправили пост - в нем еще нет подсветки и форматирования кода. Но даже так я вижу названия функций, которые однозначно дают понять свое назначение. В связи с этим: есть конкретные вопросы по коду или "все непонятно"?
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
|
19.08.2014, 19:34 [ТС] | 3 |
назначения понятны, а именно что в них происходит
Добавлено через 31 секунду хотя бы в общем так
0
|
Модератор
|
|||||||||||||||||||||||||||||||
19.08.2014, 21:11 | 5 | ||||||||||||||||||||||||||||||
Поправил форматирование, чтобы не "вырви глаз" было:
Кликните здесь для просмотра всего текста
Добавлено через 3 минуты Ксения love, Вам прям построчно прокомментировать что там происходит в функциях или и так сойдёт?
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
|
19.08.2014, 21:37 [ТС] | 6 |
да заголовки тех функций я и сама знаю как переводяться))
да что в них происходит
0
|
19.08.2014, 21:54 | 7 | |||||
Сообщение было отмечено Ксения love как решение
Решение
Ладно, начнем
Двумерный массив это одномерный массив одномерных массивов. Если рассматривать двумерный массив как таблицу, то можно представить, что сначала мы создаем массив строк, а потом создаем в цикле каждую строку, то есть массив ячеек.
2
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
|
19.08.2014, 21:56 [ТС] | 8 |
я была бы безумно вам благодарна)
0
|
Модератор
|
||||||||||||||||
20.08.2014, 10:32 | 9 | |||||||||||||||
1
|
Почетный модератор
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
||||||
20.08.2014, 11:00 | 10 | |||||
Оффтоп
Не по теме: Если ударяться в казуистику, то обычно, в разговорной речи, под "реализацией" понимают только потроха, то есть голое тело функции. Говоря "Где реализация?", подразумевают, что "Ну да, вот я вижу интерфейсы, но где реализация-то? Где все остальное?". А "определение" функции это прям как в книжке: начиная с типа возвращаемого параметра и прям до конца тела. Уже прям сразу передергивает постановка. Лучше б было: variable это указатель на указатель. То есть, по аналогии с одномерным динамическим массивом, это указатель на массив указателей - тип, содержащихся в нем элементов это указатели. Еще раз: указатель на массив, каждый элемент которого есть указатель. Все. Никакой магии. Когда мы пишем malloc, или в плюсовом варианте new, то мы говорим компилятору: "выдели нам непрерывный кусок памяти вот такого размера". Как он выделяет, где находит - нас не волнует. Главное, что непрерывный кусок памяти это и есть массив. Он выделяет и говорит: "на, пользуйся". С этих пор никто другой не может в выданную нам память залезть, только мы сами. Мы имеем непрерывный кусок памяти, требуемого нам размера в одном направлении двумерного массива. Теперь надо выделить себе вторую размерность двумерного массива. Для этого мы должны в каждый элемент того одномерного массива повтыкать по одному новому одномерному массиву. Как палки в забор. Для этого мы проходимся циклом по каждому элементу созданного массива и объявляем, что этот каждый элемент это новый массив:
В итоге мы имеем кучу одномерных массивов, но только с тем отличием, что их началы располагаются подряд в памяти. А куда там ведут хвосты нам без разницы. Поскольку я люблю рисовать картинки, то вот: Здесь, правда, целевой тип массива не int, а char - это для того, чтобы наглядно видно было разницу в размерах char и указателя на char. gru74ik, а так круто, вам бы методички писать. ))
1
|
Модератор
|
||||||
20.08.2014, 14:36 | 11 | |||||
Не по теме: На самом деле мой труд тут достаточно скромен - оформил код в читаемом виде и написал несколько комментариев. Где чего не знал - тупо гуглил и передирал текст с сайтов типа такого и вот такого. За подсказки, поправки и уточнения покорнейше благодарю! Добавлено через 2 часа 19 минут Объяснения по 1-й, 2-й и 3-й функции см. на первой странице топика. Продолжаем:
P.P.S. Поморока с параметром функции в виде указателя на указатель на тип int - это попросту трик (хитрость), с помощью которого функции в качестве параметра можно передать двумерный массив (матрицу). То же самое с возвращаемым значением (указатель на int). В языке программирования C++ нельзя передать в функцию массив или вернуть массив из функции, зато можно передать указатель (ну или, при надобности - вернуть в качестве возращаемого значения указатель). Так что если массив одномерный, то работаете с указателем первого уровня (с одной звёздочкой который). Если же массив двумерный (матрица), то работаете с указателем второго уровня (с двумя звёздочками).
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
|
22.08.2014, 15:20 [ТС] | 12 |
спасибо большое)
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
|
22.08.2014, 23:37 [ТС] | 14 |
можете пожалуйста дописать значения остальных. мне это очень важно и я вам безумно благодарна
Добавлено через 1 минуту прошуу))
0
|
Модератор
|
||||||
23.08.2014, 23:27 | 15 | |||||
Ну раз уж, как говорится, взялся за гуж, и раз уж Вы объявились (а то я в какой-то момент начал уж думать, что Вы к теме потеряли интерес), то вот Вам комментарии к пятой функции:
0
|
Модератор
|
||||||
24.08.2014, 00:11 | 17 | |||||
Точнее, создаём указатель на указатель (или, ещё можно сказать - указатель на массив указателей).
Добавлено через 32 минуты Ну и последняя (шестая) функция:
0
|
Модератор
|
||||||||||||||||
25.08.2014, 08:27 | 18 | |||||||||||||||
Сидел, думал. Сам уже запутался.
Добавлено через 28 минут Похоже, Ксения love, не всё нам рассказала! Если я правильно понял, скорее всего, задание заключалось не только в том, чтобы прокомментировать код и рассказать, что происходит в функциях, но и найти ошибки. Тогда всё это обретает смысл и прототип первой функции должен вылядеть как-то так:
1
|
Модератор
|
|
25.08.2014, 11:56 | 20 |
Вот и я так подумал:
P.S. Поначалу я так и думал, что просто ошибка. Но потом засомневался. В 6-м примере идёт создание матрицы как раз с помощью функции create_matrix() из первого примера. И там передаётся в функцию три аргумента (строка 27 в шестом примере).
0
|
25.08.2014, 11:56 | |
25.08.2014, 11:56 | |
Помогаю со студенческими работами здесь
20
Матрицы: сложения двух матриц (двумерных массивов) Сравнение элементов двух двумерных массивов Сравнение элементов двух двумерных массивов Объявить два двумерных массива (матрицы) и подсчитать сумму этих матриц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |