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

Использование виртуальных функций - C++

Восстановить пароль Регистрация
 
HomBro
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 14
24.05.2016, 12:20     Использование виртуальных функций #1
Программа берет данные из двух файлов, в которых есть дата и количество проданных билетов, и высчитывает среднее количество проданных билетов за месяц. Кароч вот программа
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
#include<iostream>
#include<fstream>
#include<clocale>
using namespace std;
 
class read {
protected:
    ifstream file;
    int i, b[31], summ, sr_zn;
public:
 
    read() : summ(0) {
    }
 
    void set() {
        file.open("1mounth.txt");
        for (i = 0; i < 31; i++) {
            file.ignore(11);
            file >> b[i];
            summ += b[i];
        }
        file.close();
        sr_zn = summ / 31;
    }
 
    void set1() {
        file.open("2mounth.txt");
        for (i = 0; i < 30; i++) {
            file.ignore(11);
            file >> b[i];
            summ += b[i];
        }
        file.close();
        sr_zn = summ / 30;
 
    }
 
    void show() {
        cout << summ << endl;
    }
 
    void show1() {
        cout << "Среднее количество билетов продаваемое в день за месяц - " << sr_zn << endl;
    }
};
 
class peregruzka : public read {
public:
    peregruzka operator- (const peregruzka&rv) {
        peregruzka res;
        res.summ = summ - rv.summ;
        if (res.summ < 0) {
            res.summ *= -1;
        }
        return res;
    }
};
 
class output : public read {
private:
    ofstream file1;
public:
    void out() {
        file1.open("out.txt", ios_base::app);
        file1 << sr_zn << endl;
        file1.close();
    }
};
 
int main() {
    setlocale(LC_CTYPE, "rus");
    output b1, b2;
    peregruzka a1, a2, a3;
    ofstream file;
 
    file.open("out.txt", ios_base::trunc);
    file.close();
 
    a1.set();
    a1.show1();
    a2.set1();
    a2.show1();
    a3 = a1 - a2;
    a3.show();
 
    b1.set();
    b1.out();
    b2.set1();
    b2.out();
    system("pause");
}
Нужно преобразовать программу с использованием виртуальных функций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2016, 12:20     Использование виртуальных функций
Посмотрите здесь:

таблица виртуальных функций C++
C++ Таблица виртуальных функций
C++ перегрузка виртуальных функций
Практическое применение виртуальных функций C++
Использование виртуальных функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nike1995
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 256
24.05.2016, 12:24     Использование виртуальных функций #2
Создай базовый класс
C++
1
2
3
4
class Base{
public:
    virtual /* функция, например void set()*/ = 0;
}
и производные от него, где ты будешь переопределять виртуальные функции
HomBro
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 14
24.05.2016, 12:36  [ТС]     Использование виртуальных функций #3
А можно поподробнее?
Nike1995
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 256
24.05.2016, 12:43     Использование виртуальных функций #4
Можешь нормально задание написать, тут легче написать, чем переписать
HomBro
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 14
24.05.2016, 12:50  [ТС]     Использование виртуальных функций #5
1 лаба
В текстовом файле фиксируется дата и количество пассажиров купивших билет междугородний автобус (исходя из расписания, согласно которому каждый день автобус выполняет несколько рейсов в течение суток). Подготовить два файла данных для двух месяцев.
Создать класс, реализующий: 1) чтение данных из файла; 2) вычисление среднего количества проданных билетов в сутки; 3) вывод результатов на экран; 4) вывод результатов в файл;
Создать перегруженную операцию -, которая будет вычислять разницу количества проданных билетов в текущем и прошлом месяце.
2 лаба
Пересмотреть проект, разработанный при выполнении лабораторной работы №1. Разработать и программно реализовать иерархию классов. При необходимости обосновать целесообразность использования объемлющих классов.
И наконец третья
Пересмотреть проект, разработанный при выполнении лабораторной работы №1. Разработать и программно реализовать иерархию классов с использованием виртуальных функций.
HomBro
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 14
24.05.2016, 14:20  [ТС]     Использование виртуальных функций #6
Есть такое задание
1) В текстовом файле фиксируется дата и количество пассажиров купивших билет междугородний автобус (исходя из расписания, согласно которому каждый день автобус выполняет несколько рейсов в течение суток). Подготовить два файла данных для двух месяцев.
Создать класс, реализующий: 1) чтение данных из файла; 2) вычисление среднего количества проданных билетов в сутки; 3) вывод результатов на экран; 4) вывод результатов в файл;
Создать перегруженную операцию -, которая будет вычислять разницу количества проданных билетов в текущем и прошлом месяце.
2) Потом преобразовать программу с использованием наследования классов.
3) И снова преобразовать программу с использованием виртуальных функций.
Первые 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
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
#include<iostream>
#include<fstream>
#include<clocale>
using namespace std;
 
class read {
protected:
    ifstream file;
    int i, b[31], summ, sr_zn;
public:
 
    read() : summ(0) {
    }
 
    void set() {
        file.open("1mounth.txt");
        for (i = 0; i < 31; i++) {
            file.ignore(11);
            file >> b[i];
            summ += b[i];
        }
        file.close();
        sr_zn = summ / 31;
    }
 
    void set1() {
        file.open("2mounth.txt");
        for (i = 0; i < 30; i++) {
            file.ignore(11);
            file >> b[i];
            summ += b[i];
        }
        file.close();
        sr_zn = summ / 30;
 
    }
 
    void show() {
        cout << summ << endl;
    }
 
    void show1() {
        cout << "Среднее количество билетов продаваемое в день за месяц - " << sr_zn << endl;
    }
};
 
class peregruzka : public read {
public:
    peregruzka operator- (const peregruzka&rv) {
        peregruzka res;
        res.summ = summ - rv.summ;
        if (res.summ < 0) {
            res.summ *= -1;
        }
        return res;
    }
};
 
class output : public read {
private:
    ofstream file1;
public:
    void out() {
        file1.open("out.txt", ios_base::app);
        file1 << sr_zn << endl;
        file1.close();
    }
};
 
int main() {
    setlocale(LC_CTYPE, "rus");
    output b1, b2;
    peregruzka a1, a2, a3;
    ofstream file;
 
    file.open("out.txt", ios_base::trunc);
    file.close();
 
    a1.set();
    a1.show1();
    a2.set1();
    a2.show1();
    a3 = a1 - a2;
    a3.show();
 
    b1.set();
    b1.out();
    b2.set1();
    b2.out();
    system("pause");
}
Yandex
Объявления
24.05.2016, 14:20     Использование виртуальных функций
Ответ Создать тему
Опции темы

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