Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
cherc
20 / 14 / 7
Регистрация: 02.05.2018
Сообщений: 311
Завершенные тесты: 3
1

Set не работает, и вывод списка дублируется

17.03.2019, 20:51. Просмотров 886. Ответов 4
Метки нет (Все метки)

базовый класс Banner - здесь все норм
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
class Banner
{
protected:
    string bannerName;  // name of banner
    int numberShow;          // number shows
    int maksNumberShow;   // max number show banner
    int minNumberShow;   //  min number show of banner
    Date dateFinishContract;  // date finish of contract
    bool statusBanner;    // status of banner(active/ no active)
    Date dateStartContract;   // date start contract
    Registration bannerRegistration;  // registration show banner
    Firm firmName;
    
    
 
public:
    Banner() : bannerName("IphoneX 64gb"), numberShow(0), maksNumberShow(1), minNumberShow(1), statusBanner(true) {/*cout << "Здесь сработал конструктор по умолчанию для Banner :)" << endl;*/} // конструктор по умолчанию
    Banner(string _bannerName, int _numbersShow, int _maksNumberShow, int _minNumberShow, Date _dateFinishContract, bool _statusBanner, Date _dateStartContract, Registration _bannerAccounting, Firm _firmName) : bannerName(_bannerName), numberShow(_numbersShow), maksNumberShow(_maksNumberShow), minNumberShow(_minNumberShow), dateFinishContract(_dateFinishContract), statusBanner(_statusBanner), dateStartContract(_dateStartContract), bannerRegistration(_bannerAccounting), firmName(_firmName) {/*cout << "Здесь сработал конструктор c параметрами для Banner :)" << endl;*/} // конструктор с параметрами
    Banner(const Banner& ptr) : bannerName(ptr.bannerName), numberShow(ptr.numberShow), maksNumberShow(ptr.maksNumberShow), minNumberShow(ptr.minNumberShow), dateFinishContract(ptr.dateFinishContract), statusBanner(ptr.statusBanner), dateStartContract(ptr.dateStartContract), bannerRegistration(ptr.bannerRegistration), firmName(ptr.firmName) {/*cout << "Здесь сработал конструктор копирования для Banner :)" << endl;*/}  // конструктор копиравния
    ~Banner()  // деструктор
    {
//      cout << "Здесь сработал деструктор для Banner " << endl;
//      firmName.~basic_string();
//      bannerName.~basic_string();
    }
    void display(); // show data of banner
    bool setBannerName(); // unput name of banner
    bool setNumberShow(int n);
    bool setMaksNumberShow(); 
    bool setMinNumberShow();
    bool setStatus(bool _status); // change status of banner
    Date getDateStartContract() const;
    Date getDateFinishContract() const;
    Registration getBannerRegistration() const;
    Firm getFirmName() const;
    string getBannerName() const;
    int getNumberShow() const;
    int getMaksNumberShow() const;
    int getMinNumberShow() const;
    bool getStatusBanner() const;
 
};
класс Manager который хранит экземпляры класса Banner - здесь вроде тоже все норм
C++
1
2
3
4
5
6
7
8
9
10
class Manager
{
private:
    MyList<VideoBanner> listImg;  // список баннеров-видео
    MyList<ImgBanner> listVideo;   // список баннеров-картинок
    MyList<Banner> list;
public:
    void setBanner(Banner data);
    void show();
};
В этой функции начинаются проблемы: 1) set для "date" не работаю почему-то. 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
#include "Manager.h"
 
void inputData(Banner &obj, Manager &Gournal)
{
    string str = "";  
    // input data of banner
    
    obj.setBannerName();/*
    obj.getFirmName().setNameFirm();
    obj.setMaksNumberShow();
    obj.setMinNumberShow();
    obj.setStatus(true);
    // date start contract
    cout << "Input start of contract" << endl;
    obj.getDateStartContract().setDay();
    */
    obj.getDateStartContract().setMonth();
    /* 
    obj.getDateStartContract().setYear();
    obj.getDateStartContract().setHour();
    obj.getDateStartContract().setMinute();
    // date finish contract
    cout << "Input finish of contract" << endl;
    obj.getDateFinishContract().setDay();
    obj.getDateFinishContract().setMonth();
    obj.getDateFinishContract().setYear();
    obj.getDateFinishContract().setHour();
    obj.getDateFinishContract().setMinute();
    // add data into list
    */
    Gournal.setBanner(obj);
 
    cout << "Введите 0 чтобы выйти, любой другой символ чтобы добавить еще 1 объект: ";
    cin >> str;
 
    if(str != "0")
    {
        inputData(obj,Gournal);
    }
 
    Gournal.show(); // здесь творится bullshit
}
 
void menu()
{
    Manager Gournal; // обявляем объект класса Manager который будет хранить объекты класса Banner
    Banner obj;
    inputData(obj,Gournal); // заполнение вручную
}
По 2 пункту проблемы: MyList - двусвязный список. В нем есть ф-я для вывода всех элементов. В Manager есть ф-я вывода. Может когда я вызываю Gournal.show - то я может как то 2 раза вызываю вывод.

класс Date
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
#include "Date.h"
 
bool Date::setYear()
{
    short int _year = 0;
 
    do
    {
        cout << "Input year(from 2019г) : ";
        cin >> _year;
    }while(_year < 2019 || _year >= 9999);
 
    year = _year;
    return true;
}
 
bool Date::setMonth()
{
    short int _month = 0;
 
    do
    {
        cout << "Input month(in numbers) : ";
        cin >> _month;
    }while(_month < 1 || _month > 12);
 
    month = _month;
    return true;
}
 
bool Date::setDay()
{
    short int _day = 0;
 
    do
    {
        cout << "Input day(in numbers): ";
        cin >> _day;
    }while(_day < 1 || _day > 31);
 
    day = _day;
    return true;
}
 
bool Date::setHour()
{
    short int _hour = 0;
 
    do
    {
        cout << "Input hour(in numbers): ";
        cin >> _hour;
    }while(_hour < 0 || _hour > 24);
 
    hour = _hour;
    return true;
}
 
bool Date::setMinute()
{
    short int _minute = 0;
 
    do
    {
        cout << "Input minute(in numbers): ";
        cin >> _minute;
    }while(_minute < 0 || _minute > 59);
 
    minute = _minute;
    return true;
}
Добавлено через 32 минуты
UPUPUPUPUPUPUPUPUPUP

Добавлено через 24 минуты
upupupupupupupupupupupup

Добавлено через 33 минуты
upupupupupupupupupupupupupupup
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2019, 20:51
Ответы с готовыми решениями:

При загрузке списка из файла дублируется последняя строка
Здравствуйте! Такая проблема: Выгружаю список в файл. С процедурой выгрузки проблем нет. Всё...

Дублируется вывод буквы
Почему выводится буква дважды? Вот код и вывод консоли: #include &lt;stdio.h&gt; int main(void) { ...

Дублируется вывод foreach
Есть функция: function findPopularDirection() { global $geo; $currency =...

Дублируется вывод информация из потока
В общем, каждый поток получает информацию со странички с разным id, т.е потоки синхронно работают...

Не работает вывод заполненного односвязного списка
Пробую решать задачки по Дейтелю, и вот застрял на этой: Написать программу, которая вставляет 25...

4
zayats80888
206 / 151 / 61
Регистрация: 07.02.2019
Сообщений: 473
17.03.2019, 21:38 2
Цитата Сообщение от cherc Посмотреть сообщение
set для "date" не работаю почему-то.
ну так они(функции стр.32-33) возвращают копию
0
cherc
20 / 14 / 7
Регистрация: 02.05.2018
Сообщений: 311
Завершенные тесты: 3
17.03.2019, 21:58  [ТС] 3
zayats80888, все равно не догоняю
0
zayats80888
206 / 151 / 61
Регистрация: 07.02.2019
Сообщений: 473
17.03.2019, 22:14 4
Лучший ответ Сообщение было отмечено cherc как решение

Решение

Цитата Сообщение от cherc Посмотреть сообщение
zayats80888, все равно не догоняю
оставьте их как геттеры и добавте вот эти сеттеры
C++
1
2
3
4
//...
Date& getDateStartContract(){return dateStartContract;}
Date& getDateFinishContract(){return dateFinishContract;}
//...
1
cherc
20 / 14 / 7
Регистрация: 02.05.2018
Сообщений: 311
Завершенные тесты: 3
17.03.2019, 22:34  [ТС] 5
zayats80888, не знаете почему вывод списка дублируется?
0
17.03.2019, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2019, 22:34

Вывод элементов списка в Memo не работает
template&lt;typename T&gt; void queue&lt;T&gt;::show_qF(TStrings *s) { Node&lt;T&gt; *p; p =...

Кнопка JButton работает, но не дублируется нажатием клавиши Enter. Найти ошибку
Здравствуйте! Есть программа: import java.awt.Color; import java.awt.Dimension; import...

Вывод количества слов в set
Нужно из текста, начиненного восклицательными, вопросительными и повествовательными предложениями...


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

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

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