Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.02.2010
Сообщений: 5
1

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

21.02.2010, 19:19. Просмотров 552. Ответов 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2010, 19:19
Ответы с готовыми решениями:

Уважаемые форумчане, помогите понять что требуется..
задали лабу по информатике.. что требуется?? просто я 0 в математике..помогите пожалуйста с...

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

Доброй ночи форумчане! Не могу изменить программу для добавочного условия
Первое условие было составить двусвязный список из случайных чисел, оно выполнено.Теперь нужно...

Форумчане, спасайте! Сижу 3 дня с этих багом разобраться не могу
Вот видео о баге. https://vimeo.com/258279915 Вот скрипты: Inventory: using UnityEngine;...

1
Автор FAQ
3683 / 960 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
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;
}
Держите. Вот полностью рабочий вариант
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2010, 21:33

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Уважаемые Форумчане вопрос к вам
Кароч ситуация такая. В биосе пароль, доступа к компу нет, то есть разобрать системник не вариант,...

Уважаемые форумчане, что с SSD?
Взгляните на S.M.A.R.T SSD-шнику хана? Текущее и худшее значения одинаковы или это нормально?

Уважаемые форумчане(вопрос про стрингрид)
Вообщем в ходе решения моей задачи возникла загвоздка... У меня частично заполнен стринг...

Уважаемые форумчане подскажите пожалуста выпадающее меню
Уважаемые форумчане подскажите пожалуста выпадающее меню имеется class=&quot;rollover&quot; и к нему стили,...


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

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

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