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

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

Войти
Регистрация
Восстановить пароль
 
vanka16
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 21
#1

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

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

C++ Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов
Создать функцию, которой строка передаётся как параметр, и которая возвращает количество слов C++
C++ Помогите создать конструкцию как экспортируемую функцию shared DLL
C++ Как правильно создать шаблон на функцию, которая использует вектор?
Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) C++
Как в main() создать указатель на функцию, которая находится в классе? C++
C++ Как в функции создать два массива и передать их в другую функцию
Как создать отдельную функцию для каждого объекта класса C++
C++ Как правильно создать функцию и затем вызвать ее
Как создать указатель на функцию-член класса и вызвать его? C++
C++ Как создать функцию изменяющую значение переменной?
Как создать функцию ввода элементов массива используя шаблоны? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,509
Записей в блоге: 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
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,509
Записей в блоге: 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     Как создать функцию
Ответ Создать тему
Опции темы

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