Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
#1

Передача всего массива в функцию - C++

21.08.2013, 15:05. Просмотров 816. Ответов 28
Метки нет (Все метки)

Начал изучать алгоритмы сортировки и поиска, решил сделать программу для тестирования работы сортировки и поиска на производительность, по времени (по нагрузке на ЦП и ОП пока что мозгов не хватает).
И возникла проблема, вот я из своей программы выделил новую программу, убрав весь лишний код, оставил только то, где происходит косяк:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
 
#include <time.h>
 
#include <windows.h>
 
const int dlina = 1000;
 
 
void One(const int *);
void Two(int *);
 
int main()
{
setlocale(LC_ALL,"");
 
int test[dlina];
 
for (int i = 0; i < dlina; i++ ) 
{ test[i] = (1 + rand() % 1000); } 
 
One(test);
 
system("pause");
return 0;
}
 
 
void One(const int *test1)
{
int temp[dlina];
*temp = *test1;
 
Two(temp);
}
 
 
void Two(int *test2)
{
for (int i = 0; i < dlina; i++ ) 
{ cout << test2[i] << " "; } 
cout << endl;
}


Я знаю что косяк происходит в строчке 37, что в Two передается что то не то, подскажите как сделать что бы передавалось нормально и подскажите почему возникает такой косяк, все в принципе сделано по аналогии с One, если взять код из строчек 43-45 и перенести в функцию One, а Two удалить, то все будет работать.


И еще вопрос, как я понял я в void One передаю ссылку на массив, т.е. если я в void One изменю полученный массив (test1) то у меня изменится и массив test из main, а если мне нужно что бы он не по ссылке передавался, а копировался, как быть?

PS то, что я передаю не по ссылке, а передаю указатель в котором хранится адрес на массив test из main, я в курсе, для простоты я написал что передаю по ссылке.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 15:05     Передача всего массива в функцию
Посмотрите здесь:

Передача массива в функцию - C++
Добрый день! Начал изучать C++ и столкнулся вот с какой проблемой. Я передаю массив в некоторую функцию. В конечном итоге передаваемый...

Передача массива в функцию - C++
Кто может объяснить как передать элемент структуры в функцию? допустим, я объявил структуру: struct one{ int nom; int mass; ...

Передача в функцию массива - C++
Всем привет. У меня следующая проблема: мне нужно передать в функцию массив так, чтоб потом при завершении работы его значения поменялись. ...

Передача массива в функцию - C++
Почему мусор выводит? bool insert(int* mas, int n, int v) { int _n = n + 1; int* mas2 = new int; for (int i = 0; i &lt; n; ++i) ...

Передача массива в функцию. - C++
Подскажите пожалуйста! Нужно считать текстовый файл в массив и найти в нем какой-нибудь символ; вернуть номер элемента в массиве. Поиск...

Передача массива в функцию - C++
Какие есть способы для передачи массивы в функцию. И как передать массив с указателем на него чтобы все изменения вносились в него? Если...

Передача массива в функцию - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;time.h&gt; using namespace std; void maxx(); int main(int argc, char *argv) ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
21.08.2013, 15:51     Передача всего массива в функцию #16
Цитата Сообщение от VLK Посмотреть сообщение
надо быть программистом с 30 летним стажем + профессором высшей математики
надо лишь рационально мыслить
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2013, 15:53     Передача всего массива в функцию #17
Цитата Сообщение от VLK Посмотреть сообщение
я могу не парится в поисках оптимальных вариантов т.к. как я понимаю они все описаны тут - Алгоритмы сортировок ?
не все

Цитата Сообщение от VLK Посмотреть сообщение
по этому стоит писать свои тестировать их ну и т.д.?
в учебных целях стоит писать свои
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
21.08.2013, 15:55  [ТС]     Передача всего массива в функцию #18
Цитата Сообщение от Кудаив Посмотреть сообщение
надо лишь рационально мыслить
ну скажем так, конечно когда то я это знал, но потом забыл и вспомнил что делить на 0 нельзя, только когда решил написать такую программу Возведение в степень, отрицательные числа

так стоит мне напрягаться с сортировкой или когда она мне понадобится, все что мне нужно, это заглянуть в эту тему - Алгоритмы сортировок ?

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
в учебных целях стоит писать свои
ну я переписал из книги пару вариантов но с пониманием дела, во все вник, надеюсь этого будет достаточно?


а точнее не вспомнил что на 0 делить нельзя, а это вычитал в книжке! если бы этого не было в книжке, была бы очередная тема на форуме с название, "почему не работает?!"
salam
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 725
21.08.2013, 16:35     Передача всего массива в функцию #19
Цитата Сообщение от VLK Посмотреть сообщение
И еще вопрос, немного относящийся к теме, сортировка, я могу не парится в поисках оптимальных вариантов т.к. как я понимаю они все описаны тут - Алгоритмы сортировок ? а что бы придумать что то новое (стоящее) надо быть программистом с 30 летним стажем + профессором высшей математики ?
надо очень хорошо разбираться в вопросе. надо понимать, какая асимптотика у какой сортировки; надо уметь по входным данным понимать, какой алгоритм быстрее; надо понимать, что к нему приписать, чтобы быстрее вышло. в общем везде принцип один нужно детально понимать все, что происходит, нужно уметь внести положительные изменения.

Добавлено через 1 минуту
Цитата Сообщение от VLK Посмотреть сообщение
const int dlina = 1000;
никогда не пишите так. это очень сильно портит впечатление о вас и вашем коде.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.08.2013, 16:48     Передача всего массива в функцию #20
Цитата Сообщение от salam Посмотреть сообщение
никогда не пишите так
Это насчёт названия переменной?
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
21.08.2013, 17:37  [ТС]     Передача всего массива в функцию #21
salam, alsav22, да, это насчет названия или насчет глобальной переменной?
salam
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 725
21.08.2013, 18:32     Передача всего массива в функцию #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Это насчёт названия переменной?
ага.

Добавлено через 9 минут
VLK, что за компилятор на скрине?
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
21.08.2013, 18:34  [ТС]     Передача всего массива в функцию #23
Цитата Сообщение от salam Посмотреть сообщение
VLK, что за компилятор на скрине?
Microsoft Visual Studio 2012
salam
21.08.2013, 18:36
  #24

Не по теме:

Цитата Сообщение от VLK Посмотреть сообщение
Microsoft Visual Studio 2012
модно...

VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
21.08.2013, 18:38  [ТС]     Передача всего массива в функцию #25
ну а че, все по русски, ошибки по русски, подчеркивает ошибки, не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
salam
162 / 143 / 12
Регистрация: 10.07.2012
Сообщений: 725
21.08.2013, 18:47     Передача всего массива в функцию #26
Цитата Сообщение от VLK Посмотреть сообщение
не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
не забывайте, что Visual Studio будет компилировать только то, что одобряет Microsoft. кому-то предпочтительнее иметь возможность работать с первозданным C++.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.08.2013, 12:16     Передача всего массива в функцию #27
Цитата Сообщение от VLK Посмотреть сообщение
ну а че, все по русски, ошибки по русски, подчеркивает ошибки, не знаю что там некоторые ищут себе приключений во всяких Code::Blocks, Emacs и т.д.
дык и переменные называй по-русски, VS должна схавать
C++
1
int длина;
только не удивляйся когда тебе никто не ответит на форуме
VLK
193 / 162 / 12
Регистрация: 05.05.2013
Сообщений: 1,225
22.08.2013, 14:06  [ТС]     Передача всего массива в функцию #28
Jupiter, во-первых именно так я не писал, я писал dlina

во-вторых:
ладно, у меня плохое знание английского, а лучше сказать я его не знаю и сложилось так что у меня нет времени его учить, при этом надо учить С++, а еще лучше сказать я С++ должен был знать еще вчера, как быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 14:18     Передача всего массива в функцию
Еще ссылки по теме:

Передача массива в функцию - C++
Как записать данные в массив, который в функции и после вызова функции получить эти данные. По типу как с переменными void...

Передача массива в функцию - C++
Не знаю в чем проблема, почему-то в функции act()(это моя функция), итерации выполняются по два раза. Суть задания создать обратную...

Передача массива в функцию С++ - C++
Например у меня есть функция для создания массива. И есть функция, которая дальше работает с уже созданным массивом. Как мне этот созданный...

передача массива в функцию - C++
у меня в мейне есть двумерный массив нужно его передать в дургую функцию как это сделать подскажите плиз

Передача массива в функцию - C++
Ребят, такая проблема закралась. По воле курсовика требуется запрогать алгоритм нахождения минимального многочлена рекуррентной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 14:18     Передача всего массива в функцию #29
Цитата Сообщение от salam Посмотреть сообщение
не забывайте, что Visual Studio будет компилировать только то, что одобряет Microsoft. кому-то предпочтительнее иметь возможность работать с первозданным C++.
В какой-то литературе (не помню в какой), мне попадался совет иметь под рукой два компилятора. Например, делать проект в студии, к которой привык, и дополнительно проверять код в не microsoft компиляторе (напимер, в mingv, который считается более близким к "первозданному C++"), чтобы исключить специфику microsoft.
Yandex
Объявления
22.08.2013, 14:18     Передача всего массива в функцию
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru