Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53

Пытаюсь понять тему иерархию классов на примере простейшей программы парка автошколы

02.10.2018, 19:56. Показов 1178. Ответов 13

Студворк — интернет-сервис помощи студентам
Добрый день, комрады!
Необходима помощь начинающему в изучении с++: планировал написать программу автопарка, с полями: фамилия, год рождения, марка машины, инструктор и т.д. + хотелось бы небольшую статистику в конце. Вот, то что смог набросать, подскажите, на верном пути или как то это можно реализовать проще? Если можно, то покажите на моем примере, заранее признателен.


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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <iostream>
#include <windows.h>
#include <fstream>
 
using namespace std;
 
 
struct STUDENT {
    char Name[15]; 
    int Year; 
};
 
 
struct CAR {
    char Nomer[15]; 
    char MarkaModel[15];
    char NameInst[15]; 
    int Number; 
};
 
 
#define MAX_CAR 30
struct AVTOSCHOOL {
    int N; 
    CAR Car[MAX_CAR];
    STUDENT Student[MAX_STUDENT];
};
 
 
 
 
CAR InputCar(void);
STUDENT InputStudent(void);
 
void OutputCar(CAR Car);
void OutputStudent(STUDENT Student)
 
void InputAvtoschool(AVTOSCHOOL*Avtoschool);
 
 
void OutputAvtoschool(AVTOSCHOOL Avtoschool);
 
 
void LoadAvtoschool(AVTOSCHOOL*Avtoschool);
 
 
void outIf(AVTOSCHOOL Avtoschool){
    int yearCar;
    bool found=false;
    cout<<"Enter year - ";
    cin>>yearCar;
    for(int i =0;i<Avtoschool.N;++i){
        if(Avtoschool.Car[i].Number > yearCar){
            OutputCar(Avtoschool.Car[i]);
            found = true;
        }
    }
    if(!found){
        cout<<"Not found car year!";
    }
}
 
 
int main()
{
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    AVTOSCHOOL Avtoschool;
 
    LoadAvtoschool(&Avtoschool);
    outIf(Avtoschool);
    Sleep(7654);
    return 0;
}
 
CAR InputCar(void)
{
    CAR car;
    cout << "Введите гос номер ====> ";
    cin >> car.Nomer;
    cout << "Введите марка модель ========> ";
    cin >> car.MarkaModel;
    cout << "ФИО инструктора ===> ";
    cin >> car.NameInst;
    cout << "Год выпуска ===> ";
    cin >> car.Number;
    return car;
}
 
 
STUDENT InputStudent(void)
{
    STUDENT Student;
    cout << "ФИО ученика ====> ";
    cin >> student.Name;
    cout << "Год рождения ========> ";
    cin >> student.Year;
    return Student;
}
 
 
void LoadAvtoschool(AVTOSCHOOL *Avtoschool)
{
    ifstream file("DataBase.txt");
    if(!file.is_open()){
        cout<<"Can not open file!";
    }else{
        Avtoschool->N = 0;
        while(!file.eof()){
            file >> Avtoschool->Car[Avtoschool->N].Nomer;
            file >> Avtoschool->Car[Avtoschool->N].MarkaModel;
            file >> Avtoschool->Car[Avtoschool->N].NameInst;
            file >> Avtoschool->Car[Avtoschool->N].Number;
            Avtoschool->N++;
        }
    }
}
 
 
void OutputCar(CAR Car)
{
    cout.width(8);
    cout.fill('0');
    cout << Car.Nomer << " "
         << Car.MarkaModel << " "
         << Car.NameInst << " "
            << Car.Number << " \n";
}
 
 
void InputAvtoschool(AVTOSCHOOL *Avtoschool)
{
    cout << "Введите количество машин ===> ";
    cin >> Avtoschool->N;
    for (int i=0;i<Avtoschool->N;i++)
    {
        cout << "Введите информацию о " << (i+1) << "-n машине \n";
        Avtoschool->Car[i]=InputCar();
    }
}
 
 
void OutputAvtoschool(AVTOSCHOOL Avtoschool)
{
    for(int i=0;i<Avtoschool.N;i++) OutputCar(Avtoschool.Car[i]);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2018, 19:56
Ответы с готовыми решениями:

Не могу понять иерархию классов java
Я не могу понять что есть что. Вот к примеру, есть пакет java.util.collection и следующая схема Все стрелочки идут к какому-то одному...

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

Архитектура программы: как лучше реализовать иерархию классов? (игра "Тамагочи")
Здравствуйте! Пишу игру тамагочи на с++ ооп. Есть класса Critter (основная). Походными классами од Critter являются Dog , Cat, Hamster. ...

13
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
06.10.2018, 07:56  [ТС]
Никто не смотрел?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
06.10.2018, 08:07
chester28rus, тип char[] на std::string поменяй, будет удобней и проще.

Добавлено через 4 минуты
chester28rus, как то так
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
#include <string>
 
struct Student {
    std::string name; 
    int Year; 
};
 
 
struct Car {
    std::string nomer; 
    std::string markaModel;
    std::string nameInst; 
    int number; 
};
 
class AutoSchool {
 
    static constexpr int MAX_CAR = 30;
    static constexpr int MAX_STUDENT = 30;
 
    int N; 
    Car car[MAX_CAR];
    Student student[MAX_STUDENT];
};
Добавлено через 1 минуту
структуры использовал как вспомогательные конструкции для класса. Классы подучи все устаканиться.
1
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
06.10.2018, 08:34  [ТС]
Спасибо, а дальше процедуры верные?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
06.10.2018, 08:43
Цитата Сообщение от chester28rus Посмотреть сообщение
Спасибо, а дальше процедуры верные?
не смотрел, времени нет. апай тему кто нибудь подхватит. или я вечерком.
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
06.10.2018, 11:50  [ТС]
Собрал, как вы порекомендовали, вылетают куча ошибок:
main.cpp:27:12: error: 'constexpr' does not name a type
main.cpp:27:12: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
main.cpp:28:12: error: 'constexpr' does not name a type
main.cpp:28:12: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
main.cpp:32:21: error: 'MAX_STUDENT' was not declared in this scope

main.cpp:38:1: error: 'CAR' does not name a type
main.cpp:39:1: error: 'STUDENT' does not name a type
main.cpp:41:16: error: variable or field 'OutputCar' declared void
main.cpp:41:16: error: 'CAR' was not declared in this scope
main.cpp:42:20: error: variable or field 'OutputStudent' declared void
main.cpp:42:20: error: 'STUDENT' was not declared in this scope
main.cpp:47:23: error: variable or field 'OutputAvtoschool' declared void
main.cpp:47:23: error: 'AVTOSCHOOL' was not declared in this scope
main.cpp:50:21: error: variable or field 'LoadAvtoschool' declared void
main.cpp:50:21: error: 'AVTOSCHOOL' was not declared in this scope
main.cpp:50:32: error: 'Avtoschool' was not declared in this scope
main.cpp:53:12: error: variable or field 'outIf' declared void
main.cpp:53:12: error: 'AVTOSCHOOL' was not declared in this scope
Dev c++ 5.4.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include <iostream>
#include <windows.h>
#include <fstream>
#include <string> 
using namespace std;
// ================ îïèñàíèå òèïîâ äàííûõ ======================
 
// Îïèñàíèå ñòðóêòóðíîãî òèïà äàííûõ ó÷åíèêè
struct Student {
    std::string name; 
    int Year; 
};
 
// Îïèñàíèå ñòðóêòóðíîãî òèïà äàííûõ <ìàøèíà + îáñëóæèâàþùèé åå èíñòðóêòîð>
struct Car {
    std::string nomer; 
    std::string markaModel;
    std::string nameInst; 
    int number; 
};
 
// Îïèñàíèå ñòðóêòóðíîãî òèïà äàííûõ Àâòîøêîëû
// ìàêñèìàëüíîå êîëè÷åñòâî ìàøèí
#define MAX_CAR 30
class AutoSchool {
 
    static constexpr int MAX_CAR = 30;
    static constexpr int MAX_STUDENT = 30;
 
    int N; 
    Car car[MAX_CAR];
    Student student[MAX_STUDENT];
};
 
// Îïèñàíèå ïðîòîòèïîâ ôóíêöèé
 
// Ââîä èíôîðìàöèè î ìàøèíå è ó÷åíèêå ñ êëàâèàòóðû
CAR InputCar(void);
STUDENT InputStudent(void);
// Âûâîä èíôîðìàöèè î ìàøèíå íà ýêðàí
void OutputCar(CAR Car);
void OutputStudent(STUDENT Student)
// Ââîä èíôîðìàöèè îá àâòîøêîëå ñ êëàâèàòóðû
void InputAvtoschool(AVTOSCHOOL*Avtoschool);
 
// Âûâîä èíôîðìàöèè îá àâòîøêîëå íà ýêðàí
void OutputAvtoschool(AVTOSCHOOL Avtoschool);
 
//Çàãðóçêà èç ôàéëà
void LoadAvtoschool(AVTOSCHOOL*Avtoschool);
 
//äîïîëíèòåëüíàÿ ñîðòèðîâêà - ïîèñê ìàøèíû ñòàðøå îïðåäåëåííîãî ãîäà
void outIf(AVTOSCHOOL Avtoschool){
    int yearCar;
    bool found=false;
    cout<<"Enter year - ";
    cin>>yearCar;
    for(int i =0;i<Avtoschool.N;++i){
        if(Avtoschool.Car[i].Number > yearCar){
            OutputCar(Avtoschool.Car[i]);
            found = true;
        }
    }
    if(!found){
        cout<<"Not found car year!";
    }
}
// =============== Îñíîâíàÿ ôóíêöèÿ ïðîãðàììû ==================
 
int main()
{
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    AVTOSCHOOL Avtoschool;
 
    LoadAvtoschool(&Avtoschool);
    outIf(Avtoschool);
    Sleep(7654);
    return 0;
}
// ============ Ââîä èíôîðìàöèè î ìàøèíå ñ êëàâèàòóðû ========
CAR InputCar(void)
{
    CAR car;
    cout << "Ââåäèòå ãîñ íîìåð ====> ";
    cin >> car.Nomer;
    cout << "Ââåäèòå Ìàðêà Ìîäåëü ========> ";
    cin >> car.MarkaModel;
    cout << "Ââåäèòå Ôàìèëèÿ È. Î. ===> ";
    cin >> car.NameInst;
    cout << "Ââåäèòå ãîä âûïóñêà ===> ";
    cin >> car.Number;
    return car;
}
 
 // ============ Ââîä èíôîðìàöèè î ñòóäåíòå ========
STUDENT InputStudent(void)
{
    STUDENT Student;
    cout << "Ââåäèòå ÔÈÎ ó÷åíèêà ====> ";
    cin >> student.Name;
    cout << "Ãîä ðîæäåíèÿ ========> ";
    cin >> student.Year;
    return Student;
}
 
// ============ Ââîä èíôîðìàöèè èç ôàéëà ========
void LoadAvtoschool(AVTOSCHOOL *Avtoschool)
{
    ifstream file("DataBase.txt");
    if(!file.is_open()){
        cout<<"Can not open file!";
    }else{
        Avtoschool->N = 0;
        while(!file.eof()){
            file >> Avtoschool->Car[Avtoschool->N].Nomer;
            file >> Avtoschool->Car[Avtoschool->N].MarkaModel;
            file >> Avtoschool->Car[Avtoschool->N].NameInst;
            file >> Avtoschool->Car[Avtoschool->N].Number;
            Avtoschool->N++;
        }
    }
}
 
// ============ Âûâîä èíôîðìàöèè î ìàøèíå íà ýêðàí ===========
void OutputCar(CAR Car)
{
    cout.width(8);
    cout.fill('0');
    cout << Car.Nomer << " "
         << Car.MarkaModel << " "
         << Car.NameInst << " "
            << Car.Number << " \n";
}
 
// ============ Ââîä èíôîðìàöèè îá àâòîøêîëå ñ êëàâèàòóðû ==========
void InputAvtoschool(AVTOSCHOOL *Avtoschool)
{
    cout << "Ââåäèòå Êîëè÷åñòâî ìàøèí ===> ";
    cin >> Avtoschool->N;
    for (int i=0;i<Avtoschool->N;i++)
    {
        cout << "Ââåäèòå èíôîðìàöèþ î " << (i+1) << "-îé ìàøèíå\n";
        Avtoschool->Car[i]=InputCar();
    }
}
 
// ============ Âûâîä èíôîðìàöèè îá àâòîøêîëå íà ýêðàí =============
void OutputAvtoschool(AVTOSCHOOL Avtoschool)
{
    for(int i=0;i<Avtoschool.N;i++) OutputCar(Avtoschool.Car[i]);
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
06.10.2018, 23:00
Цитата Сообщение от chester28rus Посмотреть сообщение
Собрал, как вы порекомендовали, вылетают куча ошибок:
Цитата Сообщение от _stanislav Посмотреть сообщение
Классы подучи все устаканиться.
Как то так
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
07.10.2018, 05:17  [ТС]
Я и учу, использую данное задание для изучения, на данный момент не могу понять, что может быть не так
0
0 / 0 / 0
Регистрация: 21.09.2018
Сообщений: 5
07.10.2018, 08:56
Не понимаю,если ты обьявил для всех пространство имен std,зачем ты приставку std:: к string и т.д добавляеш?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
07.10.2018, 09:08
chester28rus, тут же и понимать нечего, компилятор сам пишет
main.cpp:27:12: error: 'constexpr' does not name a type
main.cpp:27:12: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
добавь компилятору ключик -std=c++11,
затем смотри дальше что будет.
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
07.10.2018, 10:51  [ТС]
Croessmah, Будьте так добры, объясните, пожалуйста, где и как этот
Цитата Сообщение от Croessmah Посмотреть сообщение
ключик
использовать?
0
Неэпический
 Аватар для Croessmah
18146 / 10730 / 2066
Регистрация: 27.09.2012
Сообщений: 27,030
Записей в блоге: 1
07.10.2018, 11:03
chester28rus, я не знаю где в Dev C++ параметры компилятору задаются.

Добавлено через 47 секунд
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
0
 Аватар для vlisp
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,368
07.10.2018, 11:07
иерархия классов - это про наследование, у тебя его нет и вообще с ооп все плохо
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 53
07.10.2018, 11:36  [ТС]
В общем я вас всех понял, буду разбираться сам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2018, 11:36
Помогаю со студенческими работами здесь

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

Реализовать иерархию классов "Геометрические фигуры". Код программы должен содержать следующее:
Базовый класс Figure с дробными полями x, y - координаты фигуры и абстрактными методами getArea() и getPerimeter() - вычисление площади и...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru