Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

21.08.2013, 15:05. Просмотров 871. Ответов 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, я в курсе, для простоты я написал что передаю по ссылке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 15:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передача всего массива в функцию (C++):

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

Передача двухмерного массива из функцию в функцию - C++
Допустим у меня есть функция, в которой &quot;генерируется&quot; массив. Но нужно его передать в другую функцию, которая его выведет на экран. ...

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

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

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

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

28
Кудаив
331 / 408 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
21.08.2013, 15:51 #16
Цитата Сообщение от VLK Посмотреть сообщение
надо быть программистом с 30 летним стажем + профессором высшей математики
надо лишь рационально мыслить
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.08.2013, 15:53 #17
Цитата Сообщение от VLK Посмотреть сообщение
я могу не парится в поисках оптимальных вариантов т.к. как я понимаю они все описаны тут - Алгоритмы сортировок ?
не все

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

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

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


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

Добавлено через 1 минуту
Цитата Сообщение от VLK Посмотреть сообщение
const int dlina = 1000;
никогда не пишите так. это очень сильно портит впечатление о вас и вашем коде.
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.08.2013, 16:48 #20
Цитата Сообщение от salam Посмотреть сообщение
никогда не пишите так
Это насчёт названия переменной?
0
VLK
195 / 164 / 12
Регистрация: 05.05.2013
Сообщений: 1,197
21.08.2013, 17:37  [ТС] #21
salam, alsav22, да, это насчет названия или насчет глобальной переменной?
0
salam
174 / 155 / 17
Регистрация: 10.07.2012
Сообщений: 762
21.08.2013, 18:32 #22
Цитата Сообщение от alsav22 Посмотреть сообщение
Это насчёт названия переменной?
ага.

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

Не по теме:

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

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

во-вторых:
ладно, у меня плохое знание английского, а лучше сказать я его не знаю и сложилось так что у меня нет времени его учить, при этом надо учить С++, а еще лучше сказать я С++ должен был знать еще вчера, как быть?
0
alsav22
5436 / 4831 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.08.2013, 14:18 #29
Цитата Сообщение от salam Посмотреть сообщение
не забывайте, что Visual Studio будет компилировать только то, что одобряет Microsoft. кому-то предпочтительнее иметь возможность работать с первозданным C++.
В какой-то литературе (не помню в какой), мне попадался совет иметь под рукой два компилятора. Например, делать проект в студии, к которой привык, и дополнительно проверять код в не microsoft компиляторе (напимер, в mingv, который считается более близким к "первозданному C++"), чтобы исключить специфику microsoft.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 14:18
Привет! Вот еще темы с ответами:

Передача массива в функцию - C++
Как сделать функцию, в которую будет передавться массив. я что-то не оч понимаю. вот исходный код #include &lt;iostream&gt; #include...

Передача массива в функцию - C++
Доброе время суток! Товарищи профессионалы! Помогите, очень прошу! как передать в функцию массив a int frik (int aa) {return (1);}...

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

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

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