198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
1 | ||||||
Передача всего массива в функцию21.08.2013, 15:05. Показов 1628. Ответов 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!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
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!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
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!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
|
|
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
|
5499 / 4894 / 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 массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|