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

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

Восстановить пароль Регистрация
 
vanka16
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 21
27.01.2013, 18:57     Как создать функцию #1
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;
}
хочу создать функцию выполняющую этот алгоритм-в чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2013, 18:57     Как создать функцию
Посмотрите здесь:

создать функцию в которой строка передаётся как аргумент и возвращает количество слов C++
C++ Помогите создать конструкцию как экспортируемую функцию shared DLL
Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) C++
Как в main() создать указатель на функцию, которая находится в классе? C++
C++ Как в функции создать два массива и передать их в другую функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,889
Записей в блоге: 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)
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;
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 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;
}
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;
}
К сожалению я ничего не понял;(
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11835 / 6814 / 769
Регистрация: 27.09.2012
Сообщений: 16,889
Записей в блоге: 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;
}
Yandex
Объявления
28.01.2013, 10:21     Как создать функцию
Ответ Создать тему
Опции темы

Текущее время: 17:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru