Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
vanka16
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 21
1

Как создать функцию

27.01.2013, 18:57. Просмотров 724. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
char podstorka(char str1,char str2,int m,char str3)
{
    size_t pos=m;
        size_t len1=strlen(str1);
        size_t len2=strlen(str2);
        if(len1<pos) pos=len1;
        memcpy(str3,str1,sizeof(char)*pos);
        memcpy(str3+pos,str2,sizeof(char)*len2);
        memcpy(str3+pos+len2,str1+pos,sizeof(char)*(len1-pos+1));
return str3;
}
хочу создать функцию выполняющую этот алгоритм-в чем ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 18:57
Ответы с готовыми решениями:

Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию)
помогите решить пожалуйста Задание 2. Бинарная операция Создать класс...

Как создать функцию, принимающую в качестве аргумента иную функцию, в которой есть параметры по умолчанию?
У меня имеется функция msk с параметрами по умолчанию double msk(double a =...

Как правильно создать функцию и затем вызвать ее
#include&lt;string&gt; #include &lt;cmath&gt; #include &lt;iostream&gt; #include&lt;locale&gt;...

Как создать функцию изменяющую значение переменной?
Насколько я понял функция или возвращает значение,или выполняет какие либо...

Как создать функцию с именем файла в качестве переменной?
Прошу помочь. Есть файлы в каждом файле целые числа количество их не задано....

5
Croessmah
++Ͻ
14611 / 8365 / 1576
Регистрация: 27.09.2012
Сообщений: 20,561
Записей в блоге: 2
Завершенные тесты: 1
27.01.2013, 18:59 2
Цитата Сообщение от vanka16 Посмотреть сообщение
выполняющую этот алгоритм-в
какой? Что должна делать функция?

C++
1
char podstorka(char str1,char str2,int m,char str3)
может как-то так:
C++
1
char * podstorka(char * str1,char * str2,int m,char * str3)
0
vanka16
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 21
27.01.2013, 19:48  [ТС] 3
Цитата Сообщение от Croessmah Посмотреть сообщение
какой? Что должна делать функция?


может как-то так:
C++
1
char * podstorka(char * str1,char * str2,int m,char * str3)
Мы вводим первую и вторую строки с клавиатуры,также мы указываем символ начиная с какого в первую строку "вклинивается" вторая.К примеру s1-DADA s2-NET m=2,должно получится DANETDA(алгоритм работает).Вопрос в том как сделать это функцией ,чтобы я писал в main : s3=podstroka(s1,s2,m),предварительно введя эти данные с клавы.Я поставил везде указатели * ,но мне выводит совершенно случайные символы.
str3[1024]=privet(str1,str2,m);
std::cout<<str3<<std::endl;
0
popelyuk
8 / 8 / 2
Регистрация: 04.12.2012
Сообщений: 130
27.01.2013, 20:38 4
Цитата Сообщение от vanka16 Посмотреть сообщение
Мы вводим первую и вторую строки с клавиатуры,также мы указываем символ начиная с какого в первую строку "вклинивается" вторая.К примеру s1-DADA s2-NET m=2,должно получится DANETDA(алгоритм работает).Вопрос в том как сделать это функцией ,чтобы я писал в main : s3=podstroka(s1,s2,m),предварительно введя эти данные с клавы.Я поставил везде указатели * ,но мне выводит совершенно случайные символы.
str3[1024]=privet(str1,str2,m);
std::cout<<str3<<std::endl;
вот выдрал из одного из своих классов, надеюсь разберёшься, там только переменные переименовать, чуть-чуть подрихтовать и всё должно работать:
C++
1
2
3
4
5
6
7
8
9
10
11
template <typename type2>
base_string<type2> & base_string<type2>::addAfter(const type2 *in_val, int index) {
    if((index<1)||(index>str_len)) throw exception(EX_LOC,EX_INCORRECT_ARGUMENT);
    int out_len=getStrLen(in_val); type2 *tmp=new type2[str_len+out_len+1];
    for(int i(0); i<index; i++) tmp[i]=str_add[i];
    for(int i(0); i<out_len; i++) tmp[i+index]=in_val[i];
    for(int i(index); i<str_len; i++) tmp[i+out_len]=str_add[i];
    str_len+=out_len; tmp[str_len]=0;
    delete [] str_add; str_add=tmp;
    return *this;
}
ах, да вот ещё кусок забыл:
C++
1
2
3
4
5
template <typename type1>
int getStrLen(const type1 *in_add) {
    if(in_add==0) throw exception(EX_LOC,EX_INCORRECT_ARGUMENT);
    for(int i(0); true; i++) if(in_add[i]==0) return i;
}
0
vanka16
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 21
28.01.2013, 00:08  [ТС] 5
Цитата Сообщение от popelyuk Посмотреть сообщение
вот выдрал из одного из своих классов, надеюсь разберёшься, там только переменные переименовать, чуть-чуть подрихтовать и всё должно работать:
C++
1
2
3
4
5
6
7
8
9
10
11
template <typename type2>
base_string<type2> & base_string<type2>::addAfter(const type2 *in_val, int index) {
    if((index<1)||(index>str_len)) throw exception(EX_LOC,EX_INCORRECT_ARGUMENT);
    int out_len=getStrLen(in_val); type2 *tmp=new type2[str_len+out_len+1];
    for(int i(0); i<index; i++) tmp[i]=str_add[i];
    for(int i(0); i<out_len; i++) tmp[i+index]=in_val[i];
    for(int i(index); i<str_len; i++) tmp[i+out_len]=str_add[i];
    str_len+=out_len; tmp[str_len]=0;
    delete [] str_add; str_add=tmp;
    return *this;
}
ах, да вот ещё кусок забыл:
C++
1
2
3
4
5
template <typename type1>
int getStrLen(const type1 *in_add) {
    if(in_add==0) throw exception(EX_LOC,EX_INCORRECT_ARGUMENT);
    for(int i(0); true; i++) if(in_add[i]==0) return i;
}
К сожалению я ничего не понял;(
0
Croessmah
++Ͻ
14611 / 8365 / 1576
Регистрация: 27.09.2012
Сообщений: 20,561
Записей в блоге: 2
Завершенные тесты: 1
28.01.2013, 10:21 6
Не много Вашу переделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdlib>
#include <iostream>
#include <cstring>
char * podstorka(const char * str1,const char * str2,size_t m,char * buffer){
    if (!(str1 && str2 && buffer)) return NULL;
    size_t pos=m;
    size_t len1=strlen(str1);
    size_t len2=strlen(str2);
    if(len1<pos) pos=len1;
    memcpy(buffer,str1,pos);
    memcpy(buffer+pos,str2,len2);
    memcpy(buffer+pos+len2,str1+pos,len1-pos+1);
    return buffer;
}
 
int main(){
    char str[1024];
     podstorka("cyberforumru",".",10,str);
     std::cout<<str<<std::endl;
    return 0;
}
0
28.01.2013, 10:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 10:21

Как создать указатель на функцию-член класса и вызвать его?
Подскажите как правильно сделать, а в дальнейшем вызвать указатель на функцию...

Как правильно создать шаблон на функцию, которая использует вектор?
есть вот такая шаблонная функция, template &lt;typename T&gt; void...

Помогите создать конструкцию как экспортируемую функцию shared DLL
Я пишу на VB, но по некоторым причинам в VB невозможно реализовать необходимую...


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

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

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