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

клас Letter, клас Person - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разбиение программы на несколько частей http://www.cyberforum.ru/cpp-beginners/thread891239.html
Вот задание: Стрелок производит по мишени 5 выстрелов. Вероятность попадания в мишень при каждом выстреле 0.6. Вычислить вероятность того, что стрелок не попадет в мишень ни pазу; попадет 1 pаз; 2 pаза;...; 5 pаз. Определить, вероятность скольких попаданий будет max? Примечание: Вероятность попадания p при одном выстреле равна 0.6, вероятность промаха q=0.4. Получается посчитать только...
C++ здравствйте вытащите код здравствуйте помогите вытащить код из программы с расширением exe вот из этой проги вытащите код http://www.cyberforum.ru/cpp-beginners/thread891236.html
C++ Опишите поподробней пожалуйста
Опишите пожалуйста как это делается. В числе 33*3* дописать три цифры так, чтобы полученное число делилось на 55. Добавлено через 19 минут Спасибо, сам разобрался. #include <math.h> using namespace std; int main() {
одномерные массивы (попадание точки на плоскость) C++
Лабораторная работа 5. одномерные массивы * * Для задач этого раздела необходимо составить графический алгоритм, провести идентификацию переменных, составить программу и решить задачу на ЭВМ. Даны координаты точек х1, у1, х2, у2, ... х15, у15. Если точка попадает на плоскость, ограниченную кругом x2 + y2 = R2, то вывести на печать координаты этой точки и сообщение «ТОЧКА В ПЛОСКОСТИ»; если...
C++ Циклические программы с регулярной сменой аргумента, содержащих разветвления http://www.cyberforum.ru/cpp-beginners/thread891217.html
Лабораторная работа 4. Циклические программы с регулярной сменой аргумента, содержащих разветвления 4.6 вычислить разницу между максимальным и минимальным значением функции: Аргумент х изменяется от начального значения 0.1 с шагом 0.32 до конечного 6.5
C++ перевод с паскаля на с++ Program prog525; Uses Crt; {Массив А- вводимый массив Массив В-текущий массив Массив С-массив для последовательности с наибольшим количеством положит. эл. Массив В- массив для очистки} Var A,B,C,D:Array of integer; N,i,k,S:integer; подробнее

Показать сообщение отдельно
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
05.06.2013, 00:05     клас Letter, клас Person
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
#include <cstring>
#include <iostream>
 
class Person {
 
public:
    Person(const char* first_name, const char* last_name)
    {
        mp_first_name = new char[strlen(first_name) + 1]();
        mp_last_name  = new char[strlen(last_name) + 1]();
 
        strcpy(mp_first_name, first_name);
        strcpy(mp_last_name, last_name);
    }
 
    ~Person()
    {
        delete[] mp_first_name;
        delete[] mp_last_name;
    }
 
    const char* const first_name() const { return mp_first_name; }
    const char* const last_name() const { return mp_last_name; }
 
private:
    char* mp_first_name;
    char* mp_last_name;
};
 
class Letter {
 
public:
    Letter()
        : mp_sender(0), mp_receiver(0), mp_address(0) {}
 
    Letter(const Person* sender, const Person *resiver, char *adrr)
        : mp_sender(sender), mp_receiver(resiver)
    {
        mp_address = new char[strlen(adrr) + 1]();
        strcpy(mp_address, adrr);
 
        _make_info();
    }
 
    ~Letter()
    {
        delete[] mp_address;
        delete[] mp_info; 
    }
 
    const char* const get_info() const { return mp_info; }
 
    int send() const
    {
        return mp_sender == NULL || mp_receiver == NULL || mp_address == NULL ? 1 : 0; //c++ style int -> bool conv
    }
 
private:
    const Person* mp_sender;
    const Person* mp_receiver;
 
    char* mp_info;
    char* mp_address;
 
    void _make_info()
    {
        int offset = 0, len = 0;
        char temp[1000 + 1]; //forse allocation
 
        offset += _memcpy(temp + offset, "Sender: ");
        offset += _memcpy(temp + offset, mp_sender->first_name());
        offset += _memcpy(temp + offset, " ");
        offset += _memcpy(temp + offset, mp_sender->last_name());
        offset += _memcpy(temp + offset, "\n");
 
        offset += _memcpy(temp + offset, "Receiver: ");
        offset += _memcpy(temp + offset, mp_receiver->first_name());
        offset += _memcpy(temp + offset, " ");
        offset += _memcpy(temp + offset, mp_receiver->last_name());
        offset += _memcpy(temp + offset, "\n");
 
        offset += _memcpy(temp + offset, "Address: ");
        offset += _memcpy(temp + offset, mp_address);
        temp[offset] = 0; //null terminant
        
        mp_info = new char[offset + 1];
        strcpy(mp_info, temp);
    }
 
    int _memcpy(char* dest, const char* src)
    {
        int len = strlen(src);
        memcpy(dest, src, len);
 
        return len;
    }
};
 
int main()
{
    Person p1("Ivanov", "Petr");
    Person p2("Petrov", "Ivan");
 
    Letter letter(&p1,&p2,"Gagarina, 16");
    std::cout << "Letter" << (letter.send() == 0 ? " was " : " wasnt ") << "sended" << std::endl;
    std::cout << letter.get_info() << std::endl;
 
    return 0;
}
Добавлено через 12 минут
п.с. Если уж совсем по феншую, то еще деструкторы виртуалны или класс файнал.
 
Текущее время: 03:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru