198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
1 | ||||||
Передача всего массива в функцию21.08.2013, 15:05. Показов 1524. Ответов 28
Метки нет (Все метки)
Начал изучать алгоритмы сортировки и поиска, решил сделать программу для тестирования работы сортировки и поиска на производительность, по времени (по нагрузке на ЦП и ОП пока что мозгов не хватает).
И возникла проблема, вот я из своей программы выделил новую программу, убрав весь лишний код, оставил только то, где происходит косяк: Кликните здесь для просмотра всего текста
Я знаю что косяк происходит в строчке 37, что в Two передается что то не то, подскажите как сделать что бы передавалось нормально и подскажите почему возникает такой косяк, все в принципе сделано по аналогии с One, если взять код из строчек 43-45 и перенести в функцию One, а Two удалить, то все будет работать. И еще вопрос, как я понял я в void One передаю ссылку на массив, т.е. если я в void One изменю полученный массив (test1) то у меня изменится и массив test из main, а если мне нужно что бы он не по ссылке передавался, а копировался, как быть? PS то, что я передаю не по ссылке, а передаю указатель в котором хранится адрес на массив test из main, я в курсе, для простоты я написал что передаю по ссылке.
0
|
21.08.2013, 15:05 | |
Ответы с готовыми решениями:
28
Передача массива в функцию используя указатель на функцию Передача двухмерного массива из функцию в функцию Передача массива структур в функцию не указывая размера массива Передача двухмерного массива в функцию и изменение элемента массива |
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
21.08.2013, 15:14 | 2 |
2
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
21.08.2013, 15:17 [ТС] | 3 |
Теперь да. т.е. передавал я все нормально, косяк в присвоении, а как присвоить весь массив, всему массиву, очень желательно без циклов, если это конечно возможно.
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
21.08.2013, 15:22 | 5 |
1
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
||||||
21.08.2013, 15:22 | 6 | |||||
от глобальных переменных надо отказываться. эффективнее передавать указатели на начало и конец последовательности - begin и end
1
|
1 / 1 / 3
Регистрация: 04.06.2013
Сообщений: 48
|
|
21.08.2013, 15:23 | 7 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
21.08.2013, 15:27 [ТС] | 8 | |||||
по аналогии с обычными переменными, там же для чего то это надо. Вообще интересуюсь на всякий случай, был удивлен, когда обнаружил что массив не копируется а передается в виде ссылки.
т.е. или
пока что для простоты тестирование использую обыкновенный массив, мне с ним легче работать.
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
21.08.2013, 15:30 | 9 |
Да, либо копировать поэлементно (ручками цикл писать или std::memcpy\std::copy), либо использовать контейнер (std::array (замена массивам по сути), std::vector и т.д.).
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
21.08.2013, 15:36 [ТС] | 10 |
да я пытался устроить круговорот локальной константной переменной по функция, но что то не очень
при наведении на подчеркнутое пишет, что const int dlina должно иметь константное значение, юмор прямо.
0
|
Каратель
|
||||||
21.08.2013, 15:40 | 11 | |||||
константное значение можно получить из константного выражения, то чно можно посчитать на этапе компиляции, const ни разу этого не делает, а лишь уберегает от изменения
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
21.08.2013, 15:44 [ТС] | 12 |
А что насчет передачи всего массива не по ссылке (указателю), а что бы в функции сделали копию всего массива? такое не возможно?
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
21.08.2013, 15:44 | 13 |
0
|
Jupiter
|
21.08.2013, 15:48
#14
|
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
21.08.2013, 15:49 [ТС] | 15 |
И еще вопрос, немного относящийся к теме, сортировка, я могу не парится в поисках оптимальных вариантов т.к. как я понимаю они все описаны тут - Алгоритмы сортировок ? а что бы придумать что то новое (стоящее) надо быть программистом с 30 летним стажем + профессором высшей математики ?
Или в каждом конкретном случае свое, по этому стоит писать свои тестировать их ну и т.д.?
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
21.08.2013, 15:51 | 16 |
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
21.08.2013, 15:55 [ТС] | 18 |
ну скажем так, конечно когда то я это знал, но потом забыл и вспомнил что делить на 0 нельзя, только когда решил написать такую программу Возведение в степень, отрицательные числа
так стоит мне напрягаться с сортировкой или когда она мне понадобится, все что мне нужно, это заглянуть в эту тему - Алгоритмы сортировок ? Добавлено через 1 минуту ну я переписал из книги пару вариантов но с пониманием дела, во все вник, надеюсь этого будет достаточно? а точнее не вспомнил что на 0 делить нельзя, а это вычитал в книжке! если бы этого не было в книжке, была бы очередная тема на форуме с название, "почему не работает?!"
0
|
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
|
|
21.08.2013, 16:35 | 19 |
надо очень хорошо разбираться в вопросе. надо понимать, какая асимптотика у какой сортировки; надо уметь по входным данным понимать, какой алгоритм быстрее; надо понимать, что к нему приписать, чтобы быстрее вышло. в общем везде принцип один нужно детально понимать все, что происходит, нужно уметь внести положительные изменения.
Добавлено через 1 минуту никогда не пишите так. это очень сильно портит впечатление о вас и вашем коде.
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
21.08.2013, 16:48 | 20 |
0
|
21.08.2013, 16:48 | |
21.08.2013, 16:48 | |
Помогаю со студенческими работами здесь
20
Передача массива в функцию Передача массива в функцию Передача в функцию массива С\С++ Передача в функцию 2 массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |