Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью

15.02.2014, 12:45. Показов 9422. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью. Определить методы переназначения и изменения мощности. Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподьемности.
Реализировать вывод на экран, методы получения значений полей и методы установки значений полей, а также необходимые конструкторы (если это не указано в задании явно). Конструкторы и методы обязательно должны проверять параметры на допустимость; в случае неправильных данных - выводить значение об ошибке и заканчивать работу. Преобразование в строку реализовать в виде функции преобразования string.



Надеюсь нигде не ошибся (я про память, вроде всё в стеке создаётся и при выходе из main уничтожается), так как С++ я так и не начал нормально учить, время не бесконечное, к сожалению . Как создаст тему (если создаст, можно туда код и перенести будет).
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
#include <iostream>
#include "Lorry.h"
 
using namespace std;
 
void DisplayCarInfo(Car cars[], int length, string infoSeparator);
void DisplayCarInfo(Car * car, string infoSeparator);
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    const int arrayLength = 2;
    Car cars[arrayLength] = { Car("Ford", 330u, 8u), Lorry("Scania", 750u, 12u, 30000u) };
    DisplayCarInfo(cars, arrayLength, "\r\n");
 
    system("pause");
    return EXIT_SUCCESS;
}
 
void DisplayCarInfo(Car cars[], int length, string infoSeparator)
{
    for (int i = 0; i < length; i++)
    {
        DisplayCarInfo(&cars[i], infoSeparator);
    }
}
 
void DisplayCarInfo(Car* car, string infoSeparator)
{
    cout << "Торговая марка: " << car->GetTradeMark() << " " << "Мощность: " << car->GetEnginePower() << infoSeparator << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include <string>
 
using namespace std;
 
class Car
{
protected:
    string _tradeMark;
    unsigned int _enginePower;
    unsigned int _numberOfCylinders;
 
public:
    Car(string tradeMark, unsigned int enginePower, unsigned int numberOfCylinders);
    ~Car(void);
 
    string GetTradeMark() const;
    void SetTradeMark(string name);
 
    unsigned int GetEnginePower()  const;
    unsigned int GetNumberOfCylinders();
};
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
#pragma once
#include "Car.h"
 
Car::Car(string tradeMark, unsigned int enginePower, unsigned int numberOfCylinders)
{
    _tradeMark = tradeMark;
    _enginePower = enginePower;
    _numberOfCylinders = numberOfCylinders;
}
 
Car::~Car(void)
{
}
 
string Car::GetTradeMark() const
{
    return _tradeMark;
}
 
void Car::SetTradeMark(string name)
{
    _tradeMark = name;
}
 
unsigned int Car::GetEnginePower() const
{
    return _enginePower;
}
 
unsigned int  Car::GetNumberOfCylinders()
{
    return _numberOfCylinders;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
#include "car.h"
 
class Lorry :
    public Car
{
protected:
    unsigned int _weight_CarryingAbility;
 
public:
    Lorry(string tradeMark, unsigned int enginePower, unsigned int numberOfCylinders, unsigned int weight_CarryingAbility);
 
    ~Lorry(void);
 
    unsigned int GetWeight_CarryingAbility() const;
    void SetWeight_CarryingAbility(unsigned int weight);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "Lorry.h"
 
Lorry::Lorry(string tradeMark, unsigned int enginePower, unsigned int numberOfCylinders, unsigned int weight_CarryingAbility)
    : Car(tradeMark, enginePower, numberOfCylinders)
{
    _weight_CarryingAbility = weight_CarryingAbility;
}
 
Lorry::~Lorry(void)
{
}
 
unsigned int Lorry::GetWeight_CarryingAbility() const
{
    return _weight_CarryingAbility;
}
 
void Lorry::SetWeight_CarryingAbility(unsigned int weight)
{
    _weight_CarryingAbility = weight;
}
Добавлено через 12 минут
Чуть поправил один момент
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2014, 12:45
Ответы с готовыми решениями:

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью
Кому не трудно, помогите с решением задачи! Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом...

Создать базовый класс Саг, характеризуемый торговой маркой (строка), весом, мощностью. Определить методы перен
Создать базовый класс Саг, характеризуемый торговой маркой (строка), весом, мощностью. Определить методы переназначения и изменения...

Создать базовый класс Car(машина)
Создать базовый класс Car(машина), характерезуемой торговой маркой , числом цилиндров , мощностью. Определить методы изменения мощности и...

5
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.02.2014, 14:14
Цитата Сообщение от Casper-SC Посмотреть сообщение
C++
1
2
unsigned int GetEnginePower() const;
unsigned int GetNumberOfCylinders();
что за дискриминация GetNumberOfCylinders?

Цитата Сообщение от Casper-SC Посмотреть сообщение
C++
1
2
3
#pragma once
#include <string>
using namespace std;
как пользователь этого хедера спрашиваю, какого дьявола во всех моих файлах куда я подключаю ваш хедер мне "вываливается" содержимое std ?

Цитата Сообщение от Casper-SC Посмотреть сообщение
C++
1
void SetTradeMark(string name);
почему std::string везде передается по значению?
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
16.02.2014, 13:23  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
что за дискриминация GetNumberOfCylinders?
Просто невнимательность, если бы работал с этим кодом дальше, заметил бы и исправил.

Цитата Сообщение от Jupiter Посмотреть сообщение
какого дьявола во всех моих файлах куда я подключаю ваш хедер мне "вываливается" содержимое std ?
Что-то вообще не понял.

Цитата Сообщение от Jupiter Посмотреть сообщение
почему std::string везде передается по значению?
Как его передать по ссылке или указатель на него?

Добавлено через 39 секунд
Я вообще в теме на C# написал пример кода. Потом попросили на С++, я сразу сказал, то что я сказал выше

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
почему std::string везде передается по значению?
А, ну да: char *

Добавлено через 11 минут
Так лучше?
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
#include <iostream>
#include "Lorry.h"
 
using namespace std;
 
void DisplayCarInfo(Car * cars[], int length, char * infoSeparator);
void DisplayCarInfo(Car * car, char * infoSeparator);
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    const int arrayLength = 2;
    Car * cars[arrayLength]  = { new Car("Ford", 330u, 8u), new Lorry("Scania", 750u, 12u, 30000u) } ;
    DisplayCarInfo(cars, arrayLength, "\r\n");
 
    for (int i = 0; i < arrayLength; i++)
        delete cars[i];
 
    system("pause");
    return EXIT_SUCCESS;
}
 
void DisplayCarInfo(Car * cars[], int length, char * infoSeparator)
{
    for (int i = 0; i < length; i++)
    {
        DisplayCarInfo(cars[i], infoSeparator);
    }
}
 
void DisplayCarInfo(Car * car, char * infoSeparator)
{
    cout << "Торговая марка: " << car->GetTradeMark() << " " << "Мощность: " << car->GetEnginePower() << infoSeparator << endl;
}
Добавлено через 2 минуты
И чем плохо передавать строки в методы классов по значению?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.02.2014, 13:36
Цитата Сообщение от Casper-SC Посмотреть сообщение
А, ну да: char *
Добавлено через 11 минут
Так лучше?
нет
Цитата Сообщение от Casper-SC Посмотреть сообщение
Как его передать по ссылке или указатель на него?
по константной ссылке на константу

Цитата Сообщение от Casper-SC Посмотреть сообщение
Что-то вообще не понял.
C++
1
2
3
4
5
//file YourLibraryHeader.h
...
using namespace std;
...
string
C++
1
2
3
4
5
6
7
8
9
10
//file MyClientCode.cpp
#include <YourLibraryHeader.h>
#include "my_string.h"
 
string str; 
/* из-за того что в вашем хедере using namespace std;
* мне в моем файле становится доступен string без указания пространства имен,
* а вас об этот никто не просил, к тому же возможно что у меня есть мой самописный
* string и теперь он конфликтует со стандартным
*/
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
16.02.2014, 13:41  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение
Что-то вообще не понял.
Всё, уже понял. Просто убрал юзинг и везде прописал перед стринг std::

Добавлено через 2 минуты
Цитата Сообщение от Jupiter Посмотреть сообщение
по константной ссылке на константу
Так что ли?
C++
1
2
inline void DisplayCarInfo(Car * cars[], int length, const char * infoSeparator);
inline void DisplayCarInfo(Car * car, const char * infoSeparator);
Тут я ещё inline функции сделал, так как кода в них самый мизер.

Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
/* из-за того что в вашем хедере using namespace std;
* мне в моем файле становится доступен string без указания пространства имен,
* а вас об этот никто не просил, к тому же возможно что у меня есть мой самописный
* string и теперь он конфликтует со стандартным
*/
А есть другой более удобный способ? Кроме как:
Цитата Сообщение от Casper-SC Посмотреть сообщение
Просто убрал юзинг и везде прописал перед стринг std::
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.02.2014, 13:53
Цитата Сообщение от Casper-SC Посмотреть сообщение
Так что ли?
ну от string то зачем отказываться const std::string&

Цитата Сообщение от Casper-SC Посмотреть сообщение
А есть другой более удобный способ? Кроме как:
нет, но внутри функций можно
C++
1
2
3
4
5
void foo()
{
    using namespace std;
    string s;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2014, 13:53
Помогаю со студенческими работами здесь

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения...

Создать базовый класс Строка
Вариант 2. Описать базовый класс Строка. Объекты класса должны содержать следующие данные: указатель на сhar, что сохраняет адрес...

Кто поможет описать Базовый класс Строка и производную от Строки класс Битовая Строка
Для Класса строка нужны ещё указатель pChar и Word типа Word где будет хранится длина строки в байтах. Нужно 3 конструктора: без...

Создать иерархию классов, представляющих простое наследование. Базовый класс – строка символов (char *)
. Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (char *). Производный класс – методы,...

Описать базовый класс Строка и производную от Строка класс Десятичная_строка
Здравствуйте, уважаемые эксперты! Помогите, пожалуйста с заданием. Описать базовый класс Строка. Обязательные поля класса: • поле...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru