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

Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель - C++

Восстановить пароль Регистрация
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
29.11.2013, 13:26     Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель #1
Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель (вследствие перераспределения памяти).
Напишите функцию main() для тестирования функции moved().

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <string>
using namespace std;
typedef unsigned char byte;
 
class Mem{
    byte*mem;
    int size;
    void ensureMinSize(int minSize);
public:
    Mem(int sz=0);
    ~Mem();
    int msize();
    byte* pointer(int minSize=0);
};
 
 
class MyString {
    Mem*buf;
public:
    MyString();
    MyString(char *str);
    ~MyString();
    void concat(char*str);
    void print(ostream &os);
    bool moved();
};
 
 
Mem::Mem(int sz){
    mem=0;
    size=0;
    ensureMinSize(sz);
}
    
Mem::~Mem(){ delete []mem;};
int Mem::msize(){return size;};
 
 
void Mem::ensureMinSize(int minSize){
    if(size < minSize) {
        byte*newmem=new byte[minSize];
        memset(newmem+size,0,minSize-size);
        memcpy(newmem,mem,size);
        delete[]mem;
        mem=newmem;
        size=minSize;
    }
}
 
byte* Mem::pointer(int minSize){
    ensureMinSize(minSize);
    return mem;
}
 
 
 
 
 
 
    MyString::MyString(){
        buf=0;
        
    }
 
    MyString::MyString(char *str){
        if(!*str){
            buf=0;
            return;
        }
        buf=new Mem(strlen(str)+1);
        strcpy((char*)buf->pointer(),str);
    
    }
 
    MyString::~MyString(){
        delete buf;
    }
 
    void MyString::concat(char*str){
    if(!buf) buf=new Mem;
    strcat((char*)buf->pointer(buf->msize()+strlen(str)+1),str);
    }
 
    void MyString::print(ostream &os){
        if(!buf) return;
        os<<buf->pointer()<<endl;
        
    }
 
    bool MyString::moved(){ 
        /* как реализовать? */
 
        return true;
    }
 
 
 
int main(){
    
    MyString s("My test string");
    s.print(cout);
    s.concat(" some additional stuff");
    s.print(cout);
 
    MyString s2;
    s2.concat("Using default constructor");
    s2.print(cout);
    return 0;
}
Добавлено через 12 часов 48 минут


Добавлено через 8 часов 20 минут


Добавлено через 14 часов 36 минут
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 13:26     Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель
Посмотрите здесь:

C++ Создать функцию, которая на вход получает строку символов, сообщает количество вхождений каждой цифры в строку...
Указатель на привязанную функцию можно использовать только для вызова функции C++
C++ Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
C++ Написать программу, которая получает трехзначное число, “переворачивает” его и выводит результат в консоль
C++ Написать программу, которая получает два трехзначных числа, меняет у них местами средние цифры и выводит результат в консоль
C++ Напишите функцию, которая получает три переменные вещественного типа
C++ Напишите функцию, которая получает две переменные целого типа: A и B
C++ Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
29.11.2013, 13:37     Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель #2
вопрос то в чем заключается?
в посте вижу только цитированное задание
Yandex
Объявления
29.11.2013, 13:37     Включите в класс Met функцию bool moved(), которая получает результат вызова pointer() и сообщает, был ли перемещен указатель
Ответ Создать тему
Опции темы

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