0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 21
|
||||||
1 | ||||||
Сравнение двумерных матриц - разобрать код19.08.2014, 19:21. Показов 6440. Ответов 27
Метки нет Все метки)
(
Разобрать суть кода, что в нем описанно, функций
0
|
|
19.08.2014, 19:21 | |
Ответы с готовыми решениями:
27
Перегрузка сложения для двумерных матриц Сравнение двух двумерных массивов Сравнение двух двумерных массивов |
3254 / 2056 / 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 | |||||
![]() Решение
Ладно, начнем
Двумерный массив это одномерный массив одномерных массивов. Если рассматривать двумерный массив как таблицу, то можно представить, что сначала мы создаем массив строк, а потом создаем в цикле каждую строку, то есть массив ячеек.
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 | |
Помогаю со студенческими работами здесь
20
Сравнение элементов двух двумерных массивов Сравнение элементов двух двумерных массивов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |