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

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

Войти
Регистрация
Восстановить пароль
 
 
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
#1

Как сделать из двух функций одну) - C++

26.08.2013, 23:38. Просмотров 1101. Ответов 26
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Resize_Array_unsigned_int( unsigned int &_New_Size_, unsigned int *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( unsigned int ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
 
void Resize_Array_bool(unsigned int &_New_Size_, bool *_Conteiner_)
{
    bool *tmp = new bool[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( bool ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 23:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать из двух функций одну) (C++):

Сделать из двух строк одну, включающую их, как подпоследовательности - C++
Привет, задача заключается в том, что даётся две строки. Из них нужно сделать строку минимальной длины, которая будет включать данные, как...

из 4 функций сделать одну - C++
Помогите пожалуйста из 4 функций сортировки сделать одну, но чтобы работала на все :D Заранее благодарен. вот код: #include...

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

Как вывести одну строку состоящую из двух строк ? - C++
как вывести на экран одну строку состоявшиеся из двух строк ? в с++

Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? - C++
Hi :) Есть два числа, допустим: int a и int b, как можно их "сопряч", то есть что - то с ними сделать, что бы получить третье число,...

Как сделать ввод в одну строку? - C++
как сделать ввод в одну строку, через нажатие ентера и отступа на N расстояние, такого типа: scanf("%d.%d.%d", &Year, &Month, &Day); ...

26
Hugra
48 / 48 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
26.08.2013, 23:43 #2
Цитата Сообщение от Ko Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Resize_Array_unsigned_int( unsigned int &_New_Size_, unsigned int *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( unsigned int ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
 
void Resize_Array_bool(unsigned int &_New_Size_, bool *_Conteiner_)
{
    bool *tmp = new bool[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( bool ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
просто одно название дай, будет перегруженной функция
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
26.08.2013, 23:44 #3
хреновые функции. memcpy за границы будет вылезать.
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
26.08.2013, 23:49  [ТС] #4
Цитата Сообщение от Nekto Посмотреть сообщение
хреновые функции. memcpy за границы будет вылезать.
я согласен, старое название и новое будет 3 переменных на вход

Добавлено через 23 секунды
а как сделать так чтоб меньше было текста???

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Resize_Array_unsigned_int( unsigned int & _Old_Size_, unsigned int &_New_Size_, unsigned int *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( unsigned int ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
 
void Resize_Array_bool( unsigned int & _Old_Size_, unsigned int &_New_Size_, bool *_Conteiner_)
{
    bool *tmp = new bool[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( bool ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
26.08.2013, 23:54 #5
Ko, шаблон ф-ии
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *& _Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
как то так

Добавлено через 2 минуты
в логику не вникал если что
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
27.08.2013, 00:08  [ТС] #6
я попытался воспользоваться функцией выдала мне
>Global_variables.obj : error LNK2001: неразрешенный внешний символ ""void __cdecl Resize_Array<unsigned int>(unsigned int &,unsigned int &,unsigned int * &)" (??$Resize_Array@I@@YAXAEAI0AEAPEAI@Z)"
1
вот так запросил функцию
Resize_Array( Global_Conteiner_Size_Virtual_Time, Global_Conteiner_Size_Array_Virtual_Time, Global_Conteiner_Virtual_Time );

Добавлено через 7 минут
во внутрь)) класса вставил, всё скомпелировалось и заработало)

Добавлено через 17 секунд
всем спасибо ребята))) что хотел добился)
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.08.2013, 00:11 #7
Ko, определние шаблона должно быть в заголовочном файле.

Добавлено через 47 секунд
Цитата Сообщение от Ko Посмотреть сообщение
во внутрь)) класса вставил, всё скомпелировалось и заработало)
ок )
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
27.08.2013, 00:19  [ТС] #8
cpp
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( _Conteiner_ ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
и в h
C++
1
2
3
template<typename T>
 
void Resize_Array( unsigned int &, unsigned int &, T *);
так вот не пахало, может где я ошибся???
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
27.08.2013, 00:20 #9
Ko,
Цитата Сообщение от gray_fox Посмотреть сообщение
определние шаблона должно быть в заголовочном файле.
т.е. всё в .h
C++
1
2
3
4
template<typename T> 
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ ) {
   // ...
}
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
27.08.2013, 00:44  [ТС] #10
надо докапаться и разобраться)

Добавлено через 14 секунд
аааааааааааа

Добавлено через 8 секунд
ааааа

Добавлено через 8 секунд
))))))

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( _Conteiner_ ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
а так верно? меня беспокоить теперь sizeof( _Conteiner_ )) <= размер то правильно возьмётся?? или размер ссылки будет взят?

Добавлено через 12 минут
проверил берёт ссылку((((

Добавлено через 50 секунд
может 4 переменную завести в функции??? типа какой размер? или узнать внутри функции как то?

Добавлено через 3 минуты
сплю видимо) надо Т поставлять!!!

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во так всё правильно, всё пашет и правильно размер подставляется, всём спасибо особенно gray_fox!!!
0
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
27.08.2013, 00:51 #11
Цитата Сообщение от Ko Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во так всё правильно, всё пашет и правильно размер подставляется, всём спасибо особенно gray_fox!!!
А если нью сайз меньше олд сайза, то опять за границы полезет.
1
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
27.08.2013, 01:29  [ТС] #12
Цитата Сообщение от Nekto Посмотреть сообщение
А если нью сайз меньше олд сайза, то опять за границы полезет.
Такое не может быть))) у меня) постоянно идёт увеличение массива, может быть или более или равно

Добавлено через 1 минуту
но сделаю условие если что приравнивание) чтоб больше чем надо не скачало а то в друг))

Добавлено через 18 секунд
всякое бывает))))))

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
template<typename T>
void Resize_Array( unsigned int &_Old_Size_, unsigned int &_New_Size_, T *&_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    if ( _New_Size_ < _Old_Size_) 
         memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( T ));
    else memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во теперь красота вот так выглядит эта))
кстати была 1 грубейшая ошибка в виде T *_Conteiner_ а надо T *&_Conteiner_ фиг знает чё удалялось)))
и не большой недочёт в виде размера, сделал через условие чтоб внешнюю переменную не портить)
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
27.08.2013, 01:30 #13
Цитата Сообщение от Ko Посмотреть сообщение
Conteiner
container
0
gray_fox
27.08.2013, 01:32
  #14

Не по теме:

Цитата Сообщение от iRomul Посмотреть сообщение
container
_Да_Ладно_ ?

0
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 247
27.08.2013, 01:35  [ТС] #15
Вы чё ребята)))
0
27.08.2013, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 01:35
Привет! Вот еще темы с ответами:

Как сделать одну глобальную переменную - C++
Есть многофайловый проект. К примеру 5 файлов(5 &quot;H&quot; файлов+для них 5 &quot;срр&quot; файлов, пускай в каждом файле будет лежать класс) и есть...

Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? - C++
Собственно вопрос в топике, главное, чтоб таймер был стабилен и не скакал и чтоб задержка была в одну микросекунду. Тоесть возможно ли в...

Как сделать с использованием функций? - C++
#include &lt;iostream&gt; using namespace std; #include &lt;cmath&gt; int main() {

C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks - C++
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks


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

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

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