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

уважаемые форумчане не могу разобраться с перегрузкой - C++

Восстановить пароль Регистрация
 
Игоръ
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 5
21.02.2010, 19:19     уважаемые форумчане не могу разобраться с перегрузкой #1
задание такое: выполнить перегрузку перечисленных операций, закрепив за ними соответствующий функциональный смысл.
Строка символов.
^ - удаление из строки указанного символа
+ - сложение 2 строк
float - преобразование к типу

удаление из строки указанного символа и сложение 2 строк есть, но в 2-х прогах ПОМОГИТЕ соеденить их в одну и сделать преобразование к типу.

Вот сложение 2 строк:
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
#include<iostream.h>
#include<string.h>
#include<stdio.h>
const LEN=80;
class string
{
public:
    char s[LEN];
    int len;
    friend string operator + (string s1, string s2);
};
string operator + (string s1, string s2)
{
    string T;
    if ((T.len=s1.len+s2.len)>=LEN)
    {
        T.s[0]='0';
        T.len=0;
    }
    else
    {
        strcpy (T.s, s1.s);
        strcat (T.s, s2.s);
    }
    return T;
}
 
void main ()
{
    string s1, s2, s3;
    strcpy (s1.s, "Priwet ");
    s1.len=strlen (s1.s);
    strcpy (s2.s, "vsem!");
    s2.len=strlen (s2.s);
    s3=s1+s2;
    printf ("%s", s3.s);
}
Вот удаление из строки указанного символа:
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
#include <iostream>
using namespace std;
#define LEN 100
class string{
public:
        char s[LEN];
        string operator^(char del_char)
        {
                string D;
                memset(&D, 0, sizeof string);
                for (int i = 0, Pos = 0; s[i] != 0; i++) // iiea ia aioee ai eiioa no?iee
                {
                        if ( s[i] != del_char )
                        {
                                D.s[Pos] = s[i];
                                Pos++;
                        }
                }
        return D;
        }
};
 
int main()
{
        ::string H;
        memcpy(&H.s[0], "Hello my world", 15);
        H = H ^ 'm' ^ 'y';
        cout << &H.s[0];
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2010, 19:19     уважаемые форумчане не могу разобраться с перегрузкой
Посмотрите здесь:

C++ Не могу разобраться в С++
C++ не могу разобраться
C++ Уважаемые форумчане, помогите понять что требуется..
не могу разобраться с написанием 3 программ. не могу никак, лабы сдавать надо. Спасибо заранее! C++
Уважаемые форумчане, не могли бы вы поделиться ссылками на статьи по созданию модулей в C++ C++
Доброй ночи форумчане! Не могу изменить программу для добавочного условия C++
C++ Не могу разобраться
Не могу разобраться в if C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,421
21.02.2010, 21:33     уважаемые форумчане не могу разобраться с перегрузкой #2
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
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
 
using namespace std;
class velo_string{
    char* _data;
    size_t _size;
public:
    velo_string(const char* newStr){
        _size = strlen(newStr)+1;
        _data = new char[_size];
        memcpy(_data, newStr, _size);
    }
    velo_string operator^(char del_char)
    {
        char* Temp = new char[_size];
        memcpy(Temp, _data, _size);
        int Pos = 0;
        for (int i = 0; _data[i] != 0; i++)
        {
            if ( Temp[i] != del_char )
            {
                Temp[Pos] = _data[i];
                Pos++;
            }
        }
        Temp[Pos] = '\0';
        velo_string Ret(Temp);
    return Ret;
    }
    velo_string operator+(velo_string& otherStr)
    {
        char* newStr = new char[_size+otherStr._size];
        memcpy(newStr, _data, _size);
        strcat(newStr, otherStr._data);
 
        velo_string Temp(newStr);
    return Temp;
    }
    operator float(){
        return (float)atof(_data);
    }
    const char* c_str(){
        return _data;
    }
};
 
int main(){
    velo_string A = "Hello";
    velo_string B = " bad world";
    B = A + B;
    B = B ^ 'b' ^ 'a' ^ 'd';
    cout << B.c_str() << endl;
    velo_string C = "12.23";
    float fC = C;
    cout << fC;
 
return 0;
}
Держите. Вот полностью рабочий вариант
Yandex
Объявления
21.02.2010, 21:33     уважаемые форумчане не могу разобраться с перегрузкой
Ответ Создать тему
Опции темы

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