Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
1

Класс Bus, вывести список автобусов для заданного номера маршрута

01.03.2021, 06:33. Показов 3836. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Класс Bus: Фамилия водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации. Вывести: a) список автобусов для заданного номера маршрута; b) список автобусов, которые эксплуатируются больше 10 лет; c) список водителей в алфавитном порядке.

 Комментарий модератора 
П.5.16.Правил
Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.

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
#include <iostream>
#include <string>
using namespace std;
 
class BUS 
{   public:
    string  driver; 
    int numbus; 
    int numMarsh;
    string  busmar;
    int yearBus;
void wr()
{
     cout<<"Фамилия водителя"<<endl;
     cin>>driver;
     cout<<"Номер автобуса"<<endl;
     cin>>numbus;
     cout<<"Номер маршрута"<<endl;
     cin>>numMarsh;
     cout<<"Марка"<<endl;
     cin>>busmar;
     cout<<"Год начала эксплуатации"<<endl;
     cin>>yearBus;
     cout<<endl;
}
}; 
 
void ABC(int d, int n, BUS f[])
{
    cout << "Список автобусов для заданного номера маршрута "<< n << endl;
    for(int i = 0; i < d; i++)
    if(f[i].numMarsh == n) 
    cout << "Bus № "<< f[i].numbus << endl;   
    cout << "Список автобусов, которые эксплуатируются больше 10 лет " << endl;
    for(int i = 0; i<d; i++)
    if(f[i].yearBus+10 <2021) 
    cout << "Bus № "<< f[i].numbus << endl; 
    cout <<"Список водителей в алфавитном порядке " <<endl;
    for (int i = 0; i < d - 1; i++)
    for (int j = 0; j < d - i - 1; j++)
    if(f[j].driver>f[j+1].driver)
    swap(f[j],f[j+1]);
    for(int j = 0; j < d; j++)     
    cout << f[j].driver << endl;   
}  
 
int main()
{
        setlocale(LC_ALL, "Russian");
        int d=3,rNumber;
        BUS bus[d];
        for(int i=0;i<d;i++)
        bus[i].wr();
    cout<<"Задайте номер маршрута";
    cin>>rNumber;
    ABC(d,rNumber,bus);
};

в чем суть. Отправляю я эту задачу на проверку и учитель говорит у тебя ошибки
1) второй метод ABC должен возвращать(return) и не должен быть void
2) И второе ошибка НЕЛЬЗЯ использовать массив ну или как она сама написала (Просто должна быть работа с методами одного объекта)

1 ошибка хоть как то понятно, но вот второй как без массива сделать сортировку непонятно. Вот как раз здесь нужно помощь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2021, 06:33
Ответы с готовыми решениями:

Вывести список рейсов для заданного пункта назначения и для заданного дня недели
Есть: класс Airline Поля:пункт назначения,номер рейса,тип самолета, время вылета,дни недели,номер...

Класс Book, вывести список книг заданного автора
Book: Автор, Название, Издательство, Год, Количество страниц. Создать массив объектов. Вывести: а)...

Разработать класс для описанного объекта: Bus
Разработать класс для описанного объекта. Включить в класс конструкторы для инициализации объектов,...

Записи упорядочены по номеру маршрута. Определить, какой процент автобусов находится в заданном маршруте
Delphi Console. «Автобус» Структура записи: ● Государственный регистрационный номер: - регион...

11
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.03.2021, 10:05 2
Цитата Сообщение от young for best Посмотреть сообщение
1 ошибка хоть как то понятно, но вот второй как без массива сделать сортировку непонятно. Вот как раз здесь нужно помощь
Очевидно, этот массив нужно завернуть в отдельный класс и сделать у этого класса соответствующие методы - "Список автобусов для заданного номера маршрута", "Список автобусов, которые эксплуатируются больше 10 лет" и "Список водителей в алфавитном порядке "
0
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
01.03.2021, 10:17  [ТС] 3
oleg-m1973, то есть взять ABC сделать из него класс а прежний метод разделить внутри этого класса да. Допустим но что сделать сортировкой непонятно(без массива)
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.03.2021, 10:22 4
Цитата Сообщение от young for best Посмотреть сообщение
oleg-m1973, то есть взять ABC сделать из него класс а прежний метод разделить внутри этого класса да. Допустим но что сделать сортировкой непонятно(без массива)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ABC
{
public:
 
    void AddBus(const BUS &bus)
    {
        if (m_sz < 100)
            m_buses[m_sz++] = bus;
    }
 
    void SortByDriver();
    void RouteList(int route);
    void OldBuses(int years);
private:
    BUS m_buses[100] = {};
    size_t m_sz = 0;
};
0
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
01.03.2021, 10:24  [ТС] 5
oleg-m1973, не совсем понял ваш код
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.03.2021, 10:25 6
Цитата Сообщение от young for best Посмотреть сообщение
oleg-m1973, не совсем понял ваш код
Примерно такой класс тебе надо добавить, и работать с ним
0
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
01.03.2021, 10:33  [ТС] 7
oleg-m1973, уточнил задачу. Должен быть 1 класс и два метод и все
0
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
01.03.2021, 10:36 8
Цитата Сообщение от young for best Посмотреть сообщение
oleg-m1973, уточнил задачу. Должен быть 1 класс и два метод и все
Это вряд ли, так эту задачу не сделать.
Сделай struct BUS и class ABC
1
Модератор
Эксперт CЭксперт С++
5192 / 2910 / 1507
Регистрация: 14.12.2018
Сообщений: 5,254
Записей в блоге: 1
01.03.2021, 11:37 9
Лучший ответ Сообщение было отмечено young for best как решение

Решение

Цитата Сообщение от young for best Посмотреть сообщение
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
class BUS
{
public:
    vector<string>  driver;
    vector<int> numbus;
    vector<int> numMarsh;
    vector<string>  busmar;
    vector<int> yearBus;
    BUS()
    {
        driver.push_back("");
        numbus.push_back(0);
        numMarsh.push_back(0);
        busmar.push_back("");
        yearBus.push_back(0);
    }
    void wr(int n)
    {
        for (int i = 0; i < n; i++)
        {
            string  _driver;
            int _numbus;
            int _numMarsh;
            string  _busmar;
            int _yearBus;
            cout << "\tФамилия водителя: "; cin >> _driver;
            driver.push_back(_driver);
            cout << "\tНомер автобуса: "; cin >> _numbus;
            numbus.push_back(_numbus);
            cout << "\tНомер маршрута: "; cin >> _numMarsh;
            numMarsh.push_back(_numMarsh);
            cin.ignore();
            cout << "\tМарка: "; cin >> _busmar;
            busmar.push_back(_busmar);
            cout << "\tГод начала эксплуатации: "; cin >> _yearBus;
            yearBus.push_back(_yearBus);
            cout << endl;
            cin.ignore();
        }
    }
 
    void ABC(int n)
    {
        cout << "Список автобусов для заданного номера маршрута " << n << ":" << endl;
        for (int i = 0; i < numMarsh.size(); i++)
            if (numMarsh[i] == n)
            {
                cout << "\tФамилия водителя: " << driver[i];
                cout << "\tНомер автобуса: " << numbus[i];
                cout << "\tНомер маршрута: " << numMarsh[i];
                cout << "\tМарка: " << busmar[i];
                cout << "\tГод начала эксплуатации: " << yearBus[i];
                cout << endl;
            }
        cout << "Список автобусов, которые эксплуатируются больше 10 лет:" << endl;
        for (int i = 0; i < numMarsh.size(); i++)
            if (yearBus[i] + 10 < 2021)
            {
                cout << "\tФамилия водителя: " << driver[i];
                cout << "\tНомер автобуса: " << numbus[i];
                cout << "\tНомер маршрута: " << numMarsh[i];
                cout << "\tМарка: " << busmar[i];
                cout << "\tГод начала эксплуатации: " << yearBus[i];
                cout << endl;
            }
        cout << "Список водителей в алфавитном порядке:" << endl;
        for (int i = 0; i < numMarsh.size() - 1; i++)
            for (int j = i + 1; j < numMarsh.size(); j++)
                if (driver[i] > driver[j])
                {
                    swap(driver[i], driver[j]);
                    swap(numbus[i], numbus[j]);
                    swap(numMarsh[i], numMarsh[j]);
                    swap(busmar[i], busmar[j]);
                    swap(yearBus[i], yearBus[j]);
                }
                    
        for (int i = 0; i < numMarsh.size(); i++)
        {
            cout << "\tФамилия водителя: " << driver[i];
            cout << "\tНомер автобуса: " << numbus[i];
            cout << "\tНомер маршрута: " << numMarsh[i];
            cout << "\tМарка: " << busmar[i];
            cout << "\tГод начала эксплуатации: " << yearBus[i];
            cout << endl;
        }
    }
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, rNumber;
    BUS bus;
    cout << "Задайте количество маршрута: ";
    cin >> n;
    bus.wr(n);
    cout << "Задайте номер маршрута: ";
    cin >> rNumber;
    bus.ABC(rNumber);
}
0
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
01.03.2021, 12:00  [ТС] 10
Volga_, что за вектор

Добавлено через 5 минут
Volga_, можете код подробно описать потому что мы еще не прошли вектор и что за
C++
1
push_back
0
Модератор
Эксперт CЭксперт С++
5192 / 2910 / 1507
Регистрация: 14.12.2018
Сообщений: 5,254
Записей в блоге: 1
01.03.2021, 12:02 11
Цитата Сообщение от young for best Посмотреть сообщение
что за вектор
Как массив для работ с требованиями задачи !

Добавлено через 1 минуту
Цитата Сообщение от young for best Посмотреть сообщение
push_back
Вы сможете посмотреть его в интернете !
0
2 / 1 / 1
Регистрация: 17.06.2020
Сообщений: 134
03.03.2021, 16:26  [ТС] 12
oleg-m1973, вобщем массив надо использовать только при заполнении то есть в методе wr(). А ABC без массива и без void. Какие варианты есть решений ?
0
03.03.2021, 16:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2021, 16:26
Помогаю со студенческими работами здесь

Вывести номера рейсов и время вылета самолетов для заданного пункта назначения
В справочной аэропорта хранится расписание вылета самолетов на следующие сутки. Для каждого рейса...

Как вывести на экран список автобусов, если данные о них занесены в txt-файл?
Как выполнить начальное формирование данных о всех автобусах в виде списка? Вот мой код: #include...

Для заданного номера месяца вывести все приходящиеся на этот месяц праздничные дни
Помогите с программой. должна быть в консоли. если есть подобные скиньте ссылку. буду благодарен)...

Вывести все номера рейсов и время вылета самолета для заданного пункта назначения
Нужна программа для с++ В справочной аэропорта хранится расписание вылета самолетов на следующие...

Файлы: вывести все номера рейсов и время вылета самолета для заданного пункта назначения
Помогите пожалуйста, не могу разобраться как выводить данные по одной введенной фразе. Задание...

По введенному номеру маршрута вывести на печать вид транспорта, начальный и конечный пункт маршрута
Написать программу по созданию файла записей, содержащих сведения согласно условию задачи: Номер...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru