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

Абстрактный класс.производные функции

22.05.2013, 15:43. Показов 1180. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот условие задачи
Кликните здесь для просмотра всего текста
Создать абстрактный класс транспортное средство Trans с методами позволяющим вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства.

Создать производные классы: Легковая_машина (марка, номер, скорость, грузоподъемность), Мотоцикл (марка, номер, скорость, грузоподъемность, наличие коляски, при этом если коляска отсутствует, то грузоподъемность равна 0), Грузовик (марка, номер, скорость, грузоподъемность, наличие прицепа, при этом если есть прицеп, то грузоподъемность увеличивается в два раза) со своими методами вывода информации на экран, и определения грузоподъемности.

Создать базу (массив) из n транспортных средств, вывести полную информацию из базы на экран, а также организовать поиск транспортных средств, удовлетворяющих требованиям грузоподъемности.


А вот список ошибок:
Кликните здесь для просмотра всего текста

[bcc32 Error] File3.cpp(31): E2238 Multiple declaration for '~Trans::Trans()'
Full parser context
File3.cpp(14): class Trans
[bcc32 Error] File3.cpp(30): E2344 Earlier declaration of '~Trans::Trans()'
Full parser context
File3.cpp(14): class Trans
[bcc32 Warning] File3.cpp(29): W8070 Function should return a value
Full parser context
File3.cpp(14): class Trans
File3.cpp(32): decision to instantiate: int Trans:rint()
--- Resetting parser context for instantiation...
File3.cpp(28): parsing: int Trans:rint()
[bcc32 Warning] File3.cpp(49): W8022 'Car::wgt()' hides virtual function 'Trans::wgt() const'
Full parser context
File3.cpp(34): class Car
[bcc32 Warning] File3.cpp(49): W8022 'Car:rint() const' hides virtual function 'Trans:rint()'
Full parser context
File3.cpp(34): class Car
[bcc32 Error] File3.cpp(38): E2188 Expression syntax
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(43): E2275 { expected
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(70): E2188 Expression syntax
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(86): E2310 Only member functions may be 'const' or 'volatile'
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(86): E2141 Declaration syntax error
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(91): E2139 Declaration missing ;
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Warning] File3.cpp(43): W8070 Function should return a value
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: int Car:rintTransName() const
--- Resetting parser context for instantiation...
File3.cpp(41): parsing: int Car:rintTransName() const
[bcc32 Warning] File3.cpp(47): W8070 Function should return a value
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: int Car:rint() const
--- Resetting parser context for instantiation...
File3.cpp(44): parsing: int Car:rint() const
[bcc32 Warning] File3.cpp(51): W8098 Multi-character character constant
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2129 Character constant too long (or empty)
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2034 Cannot convert 'unsigned int' to 'const char *'
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2342 Type mismatch in parameter '__command' (wanted 'const char *', got 'unsigned int')
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2303 Type name expected
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2034 Cannot convert 'int *' to 'Trans *'
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2257 , expected
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2141 Declaration syntax error
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2139 Declaration missing ;
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Warning] File3.cpp(58): W8004 'a' is assigned a value that is never used
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2190 Unexpected }
[bcc32 Error] File3.cpp(60): E2040 Declaration terminated incorrectly
[bcc32 Error] File3.cpp(60): E2141 Declaration syntax error
[bcc32 Error] File3.cpp(60): E2238 Multiple declaration for 'i'
[bcc32 Error] File3.cpp(60): E2344 Earlier declaration of 'i'
[bcc32 Error] File3.cpp(64): E2190 Unexpected }
Failed
Elapsed time: 00:00:00.1

Большое спасибо за помощь
C++ (Qt)
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
#include <math.h>
#include <iostream.h>
 
 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual float wgt() const { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print(){
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m;};
        ~Trans(){delete[]n;};
};
 
class Car: public Trans{
    float w;
    public:
    float wgt() { return 0; }
        Car(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             ww+=100;
            }
        else (temp=='n'){};
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             ww*=2
            }
        else (temp=='n'){};
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
    system('chcp 1251');
 
    int a,b,c;
         Trans *a[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
             a[i]->print();   }
             
 
 
        getchar();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2013, 15:43
Ответы с готовыми решениями:

Абстрактный класс и его производные
Здравствуйте. Мне необходимо построить иерархию классов - базовый абстрактный и два производных. Оба производных класса имеют несколько...

Создать абстрактный базовый класс и производные
Всем привет. Прошу подсказать, что-то у меня не выходит. Задание: Создайте абстрактный базовый класс &quot;Работник&quot;, один из методов...

Создать абстрактный базовый класс Figure и производные классы Rectangle, Circle
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle...

3
13 / 13 / 4
Регистрация: 15.04.2010
Сообщений: 61
22.05.2013, 16:18
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
#include <math.h>
#include <iostream>
#include <cstring> 
using namespace std; 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual float wgt() const { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print() const{
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m; delete[]n;};
 
};
 
class Car: public Trans{
    float w;
    public:
    float wgt() { return 0; };
    Car(char *mm,char *nn, float vv,float ww):Trans(mm,nn,vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w+=100;
            }
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w*=2;
            }
 
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
 
    int a,b,c;
         Trans *ar[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
             ar[i]->print();   }
 
}
1
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
22.05.2013, 20:13  [ТС]
Спасибо! А как включить функцию wgt()?
C++
1
2
3
4
for(int i=0;i<3;i++){
                ar[i]->wgt();
             ar[i]->print();
      }
Таким способом 0 реакции...
0
13 / 13 / 4
Регистрация: 15.04.2010
Сообщений: 61
22.05.2013, 20:29
weightless, а какая реакция должна быть. Функция же ничего не делает.

Добавлено через 7 минут
А, нашел. для грузовика. сейчас посмотрим

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


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 <math.h>
#include <iostream>
#include <cstring> 
using namespace std; 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual int wgt() { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print() const{
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m; delete[]n;};
 
};
 
class Car: public Trans{
    float w;
    public:
    int wgt() { return 0; };
    Car(char *mm,char *nn, float vv,float ww):Trans(mm,nn,vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w+=100;
            }
        return 0; 
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w*=2;
            }
    return 0;
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
 
    int a,b,c;
         Trans *ar[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
        ar[i]->wgt();             
        ar[i]->print();   }
 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.05.2013, 20:29
Помогаю со студенческими работами здесь

Создать класс - данные - абстрактный базовый класс. Создать производные классы
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Создать иерархию классов: абстрактный базовый класс Array и производные классы AndArray и OnArray
Помогите написать программу, спасибо!!! Создать абстрактный базовый класс Array с виртуальными методами сложения и поэлементной...

Объясните как объявить абстрактный класс, и при этом не тащить виртуальные методы в производные классы
Суть вопроса - есть у меня класс, который я решаю сделать абстрактным. Как я понимаю что бы сделать класс абстрактным необходимо просто...

Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями
Прошу вашей интеллектуальной помощи) Условие задачи: 16. Создать абстрактный класс Norm с виртуальной функцией вычисления нормы и...

Создать абстрактный базовый класс Animal и производные классы Rooster, Goose, Turkey, Duck, Goat, Ram, Cow, Horse
Здравствуйте, не могу допереть как сделать последний пункт задания.Вот само задание 1. Создать абстрактный базовый класс Animal с чистой...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru