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

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

Войти
Регистрация
Восстановить пароль
 
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
#1

Сформировать класс ,отвечающий предложенным требованиям - C++

05.12.2012, 22:41. Просмотров 523. Ответов 17
Метки нет (Все метки)

Пожалуйста пожалуйста пожалуйста помогите девушке с заданием
Сформировать класс ,отвечающий предложенным требованиям и продемонстрировать его использование(данные могут вводится и с клавиатуры и с из файла).Показать ситуации в которых необходимо использование ключевого слова this.
Переменные экземпляра ,класса,константы и переменные readonly:
-номер посылки;
-вес посылки;
-базовая цена посылки;
-дата отправки;
-пункт назначения;
-коэффициент сезонной (зимней) скидки
-стоимость упаковки
Методы класса(экземпляра)для вычисления или выполнения действий:
-кол-во пунктов назначения для посылок отправленных во втором полугодии позапрошлого года
-общую стоимость посылок
-средний вес посылок,отправленных в указанный пункт назначения

Конструкторы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2012, 22:41     Сформировать класс ,отвечающий предложенным требованиям
Посмотрите здесь:

Помогите доделать программу так, чтобы она соответствовала следующим требованиям C++
Сформировать матрицу C++
C++ Сформировать класс (посылки),отвечающий предложенным требованиям и продемонстрировать его использование
Сформировать вектор В(к) из a(i,j) < 0 C++
Исправить ошибки. Написать функцию, удовлетворяющую следующим требованиям: C++
C++ Сформировать список
C++ Используя графические возможности языка C, реализовать экранную заставку с предложенным видеоэффектом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2012, 22:45     Сформировать класс ,отвечающий предложенным требованиям #2
Цитата Сообщение от tanya_luck Посмотреть сообщение
Методы класса(экземпляра)для вычисления или выполнения действий:[LIST]
Нужно использовать List из STL? или вы тэг не закрыли
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
05.12.2012, 22:49  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #3
.::.DIMA.::., определенно НЕТ

Добавлено через 3 минуты
.::.DIMA.::., извините[LIST] лишнее..
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2012, 22:59     Сформировать класс ,отвечающий предложенным требованиям #4
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
#include <iostream>
#include <string>
#include <ctime>
 
class Parcel {
private:
    unsigned int number;
    double weight;
    double parcelCost;
    tm time;
    std::string destination;
    double discount;
    double boxCost;
 
public:
    Parcel(unsigned int number, double weight, double parcelCost, tm time, std::string destination, double discount, double boxCost) {
        this->number = number;
        this->weight = weight;
        this->parcelCost = parcelCost;
        this->time = time;
        this->destination = destination;
        this->discount = discount;
        this->boxCost = boxCost;
    }
 
    // Добавить get и set методы
};
Добавлено через 35 секунд
Дальше сами справитесь?
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
05.12.2012, 23:00  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #5
.::.DIMA.::., а полностью можно ?^^
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2012, 23:23     Сформировать класс ,отвечающий предложенным требованиям #6
Как-то так:

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
#include <iostream>
#include <string>
#include <ctime>
#include <list>
#include <set>
 
class Parcel {
private:
    unsigned int number;
    double weight;
    double parcelCost;
    tm departureTime;
    std::string destination;
    double discount;
    double boxCost;
 
public:
    Parcel(unsigned int number, double weight, double parcelCost, tm departureTime, std::string destination, double discount, double boxCost) {
        this->number = number;
        this->weight = weight;
        this->parcelCost = parcelCost;
        this->departureTime = departureTime;
        this->destination = destination;
        this->discount = discount;
        this->boxCost = boxCost;
    }
 
    // Добавить оставшиеся get и set методы
 
    double GetParcelCost() const {
        return parcelCost;
    }
 
    double GetWeight() const {
        return weight;
    }
 
    tm GetDepartureTime() const {
        return departureTime;
    }
 
    std::string GetDestination() const {
        return destination;
    }
 
    /*
        Количество пунктов назначения посылок, отправленных во втором полугодии позапрошлого года
    */
    static int GetNumberOfDestinations(std::list<Parcel> parcels) {
        time_t seconds = time(NULL);
        tm* now = localtime(&seconds);
 
        std::set<std::string> dsts;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            if((it->GetDepartureTime().tm_year == now->tm_year - 2) && it->GetDepartureTime().tm_mon > 5) {
                dsts.insert(it->GetDestination());
            }
        }
        return dsts.size();
    }
 
    /*
        Общая стоимость посылок
    */
    static double GetTotalCost(std::list<Parcel> parcels) {
        double total = 0.0;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            total += it->GetParcelCost();
        }
        return total;
    }
 
    /*
        Средний вес посылок, отправленных в определённый пункт назнаения
    */
    static double GetAverageWeight(std::list<Parcel> parcels, std::string destination) {
        double av = 0.0;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            if(it->GetDestination() == destination) {
                av += it->GetWeight();
            }
        }
        return av;
    }
};
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
05.12.2012, 23:28  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #7
.::.DIMA.::., ошибка в VS.
'localtime': This function or variable may be unsafe
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2012, 23:35     Сформировать класс ,отвечающий предложенным требованиям #8
tanya_luck, это не ошибка, это предупреждение. Должно компилироваться.

Добавлено через 1 минуту
Небольшая ошибка, замените метод:

C++
1
2
3
4
5
6
7
8
9
10
11
static double GetAverageWeight(std::list<Parcel> parcels, std::string destination) {
        double av = 0.0;
        double count = 0.0;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            if(it->GetDestination() == destination) {
                av += it->GetWeight();
                count++;
            }
        }
        return av / count;
    }
Добавлено через 2 минуты
Можете проверить работу:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    tm date;
    date.tm_year = 2012;
    date.tm_mon = 5;
    date.tm_mday = 4;
    Parcel p1(1, 1.5, 5.0, date, "Moskow", 0.0, 0.5);
    Parcel p2(2, 2.0, 6.0, date, "St. Petersburg", 0.0, 0.5);
    Parcel p3(3, 15, 70.0, date, "Smolensk", 0.0, 0.5);
    std::list<Parcel> parcels;
    parcels.push_back(Parcel (1, 1.5, 5.0, date, "Moskow", 0.0, 0.5));
    parcels.push_back(Parcel (2, 2.0, 6.0, date, "St. Petersburg", 0.0, 0.5));
    parcels.push_back(Parcel (3, 15, 70.0, date, "Smolensk", 0.0, 0.5));
 
    std::cout << "Average Weight = " << Parcel::GetAverageWeight(parcels, "Moskow") << std::endl;
    std::cout << "Number of destinations = " << Parcel::GetNumberOfDestinations(parcels) << std::endl;
    std::cout << "Total cost = " << Parcel::GetTotalCost(parcels) << std::endl;
 
    return 0;
}
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
05.12.2012, 23:40  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #9
.::.DIMA.::., не компилируется.
даже time.h подключила..
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
05.12.2012, 23:47     Сформировать класс ,отвечающий предложенным требованиям #10
Какая среда разработки (номер версии)?
Вы полностья код скопировали?

Добавлено через 1 минуту
И какие именно ошибки?
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
05.12.2012, 23:54  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #11
.::.DIMA.::., microsoft visual studio 2010.
полностью скопировала.
c:\users\admin\documents\visual studio 2010\projects\нрп\нрп\елг.cpp(52): warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files (x86)\microsoft visual studio 10.0\vc\include\time.inl(112): см. объявление "localtime"
LINK : fatal error LNK1561: точка входа должна быть определена

СБОЙ построения.

Затраченное время: 00:00:01.49
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
06.12.2012, 00:05     Сформировать класс ,отвечающий предложенным требованиям #12
tanya_luck, вы метод main написали? Скорее всего нет.
Удалите всё, что написали раньше и скопируйте полностью эту программу.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <string>
#include <ctime>
#include <list>
#include <set>
 
class Parcel {
private:
    unsigned int number;
    double weight;
    double parcelCost;
    tm departureTime;
    std::string destination;
    double discount;
    double boxCost;
 
public:
    Parcel(unsigned int number, double weight, double parcelCost, tm departureTime, std::string destination, double discount, double boxCost) {
        this->number = number;
        this->weight = weight;
        this->parcelCost = parcelCost;
        this->departureTime = departureTime;
        this->destination = destination;
        this->discount = discount;
        this->boxCost = boxCost;
    }
 
    // Добавить оставшиеся get и set методы
 
    double GetParcelCost() const {
        return parcelCost;
    }
 
    double GetWeight() const {
        return weight;
    }
 
    tm GetDepartureTime() const {
        return departureTime;
    }
 
    std::string GetDestination() const {
        return destination;
    }
 
    /*
        Количество пунктов назначения посылок, отправленных во втором полугодии позапрошлого года
    */
    static int GetNumberOfDestinations(std::list<Parcel> parcels) {
        time_t seconds = time(NULL);
        tm* now = localtime(&seconds);
 
        std::set<std::string> dsts;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            if((it->GetDepartureTime().tm_year == now->tm_year - 2) && it->GetDepartureTime().tm_mon > 5) {
                dsts.insert(it->GetDestination());
            }
        }
        return dsts.size();
    }
 
    /*
        Общая стоимость посылок
    */
    static double GetTotalCost(std::list<Parcel> parcels) {
        double total = 0.0;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            total += it->GetParcelCost();
        }
        return total;
    }
 
    /*
        Средний вес посылок, отправленных в определённый пункт назнаения
    */
    static double GetAverageWeight(std::list<Parcel> parcels, std::string destination) {
        double av = 0.0;
        double count = 0.0;
        for(std::list<Parcel>::const_iterator it = parcels.begin(); it != parcels.end(); it++) {
            if(it->GetDestination() == destination) {
                av += it->GetWeight();
                count++;
            }
        }
        return av / count;
    }
};
 
int main()
{
    tm date;
    date.tm_year = 2012;
    date.tm_mon = 6;
    date.tm_mday = 4;
    std::list<Parcel> parcels;
    parcels.push_back(Parcel (1, 1.5, 5.0, date, "Moskow", 0.0, 0.5));
    parcels.push_back(Parcel (2, 2.0, 6.0, date, "St. Petersburg", 0.0, 0.5));
    parcels.push_back(Parcel (3, 15, 70.0, date, "Smolensk", 0.0, 0.5));
 
    std::cout << "Average Weight = " << Parcel::GetAverageWeight(parcels, "Moskow") << std::endl;
    std::cout << "Number of destinations = " << Parcel::GetNumberOfDestinations(parcels) << std::endl;
    std::cout << "Total cost = " << Parcel::GetTotalCost(parcels) << std::endl;
 
    return 0;
}
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
06.12.2012, 00:14  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #13
.::.DIMA.::., блин..точно,извините)спасибо большое)

Добавлено через 4 минуты
.::.DIMA.::., а в результатах что выдает?объясните пожалуйста поподробнее
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
06.12.2012, 00:18     Сформировать класс ,отвечающий предложенным требованиям #14
В методе main создаются 3 экземпляра класса и помещаются в коллекцию. Затем вызываются методы, которые нужны по условию задания.
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
06.12.2012, 00:19  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #15
у меня выдает это.
разве так надо?
Миниатюры
Сформировать класс ,отвечающий предложенным требованиям  
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
06.12.2012, 00:26     Сформировать класс ,отвечающий предложенным требованиям #16
Абсолютно верно.
Для проверки результатов я создал 3 экземпляра.

Средний вес посылок, отправленных в Москву = 1.5 / 1 = 1.5
Количество пунктов назначения посылок, отправленных во втором полугодии позапрошлого года = 0, т.к. все посылки отправлены в 2012 году.
Общая стоимость всех посылок = 5 + 6 + 70 = 81

Добавлено через 2 минуты
Вы можете изменить входные данные и получите другие результаты.
Так же вы можете сделать в полном соответствии с вашим заданием: сделать ввод с клавиатуры или из файла.
tanya_luck
 Аватар для tanya_luck
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 14
06.12.2012, 00:29  [ТС]     Сформировать класс ,отвечающий предложенным требованиям #17
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Абсолютно верно.
Для проверки результатов я создал 3 экземпляра.

Средний вес посылок, отправленных в Москву = 1.5 / 1 = 1.5
Количество пунктов назначения посылок, отправленных во втором полугодии позапрошлого года = 0, т.к. все посылки отправлены в 2012 году.
Общая стоимость всех посылок = 5 + 6 + 70 = 81

Добавлено через 2 минуты
Вы можете изменить входные данные и получите другие результаты.
Так же вы можете сделать в полном соответствии с вашим заданием: сделать ввод с клавиатуры или из файла.
то есть считывание из файла так же организовано ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 00:34     Сформировать класс ,отвечающий предложенным требованиям
Еще ссылки по теме:

Сформировать множество [К, 2К, 3К, 4К] C++
Сформировать вектор в С++ C++
Сформировать набор классов связанных между собой виртуальным наследованием,описать каждый класс C++
Вывод команды cout после ввода значений, несоответствующих требованиям C++
Улучшить фрагмент кода, отвечающий за вывод таблицы на консоль C++

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

Или воспользуйтесь поиском по форуму:
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
06.12.2012, 00:34     Сформировать класс ,отвечающий предложенным требованиям #18
В моём примере считывания из клавиатуры (файла) нет. Я вам написал минимальный вариант.

Не по теме:

Я вот думаю, как вы сдавать собираетесь. Вы хотя бы разберитесь, прежде чем показывать преподавателю



Добавлено через 2 минуты
И исправьте, пожалуйста, 55 строку, потому что в структуре tm хранится количество лет, прошедших с 1900.
C++
1
if((it->GetDepartureTime().tm_year == now->tm_year + 1900 - 2) && it->GetDepartureTime().tm_mon > 5) {
Yandex
Объявления
06.12.2012, 00:34     Сформировать класс ,отвечающий предложенным требованиям
Ответ Создать тему
Опции темы

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