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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Casper-SC
Эксперт .NET
3486 / 1705 / 175
Регистрация: 27.03.2010
Сообщений: 4,854
Записей в блоге: 1
#1

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

15.02.2014, 12:45. Просмотров 956. Ответов 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 минут
Чуть поправил один момент
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2014, 12:45     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью
Посмотрите здесь:

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

Описать базовый класс СТРОКА - C++
Задача. описать класс «Строка», инкапсулирующий в себе данные строки и операций для работы с ними. Создать демонстрационную программу в...

Создать класс строка и производный класс битовая строка, не работает переопределение операций - C++
Здравствуйте уважаемые форумчане.Мне очень нужна помощь в разработке класса.Сам класс вроде работает но вот 1 задание к нему неработает...

Создать базовый класс Array - C++
Создать базовый класс Array, в котором определите поле-массив подходящего типа и поле для хранения количества элементов у текущего...

Создать базовый и производный класс - C++
Базовый класс РАБОТНИК с член-данными ФИО, идентификационный код, возраст. Производный класс ИНЖЕНЕР с член-данными специальность, месячный...

Создать базовый класс список - C++
Помогите....нужно написать проги(ТЕМА НАСЛЕДОВАНИЯ)...Непонял задания...если кто прочтает и поймет что нужно сделать то...

Создать абстрактный базовый класс - C++
Помогите: Создать абстрактный базовый класс Container с виртуальными функциями вставки и извлечения. Создать производные классы Stack и...

Создать базовый класс Array - C++
Создать базовый класс Array, в котором определите поле-массив подходящего типа и поле для хранения количества элементов у текущего...

Создать базовый класс список - C++
Создать базовый класс список. Реализовать на базе списка стек и очередь с виртуальными функциями вставки и вытаскивания нашел такой код,...

Создать абстрактный базовый класс Vehicle - C++
Доброго всем дня! проблема в следующем - не могу понять условия задания. Мне главное что бы мне помогли сформировать условие задания. Вот...

Создать базовый класс Array - C++
Задание выглядит так: Создать базовый класс Array, в котором определите полемассив подходящеrо типа и поле для хранения количества...

Создать абстрактный базовый класс Figure - C++
Здравствуйте,помогите пожалуйста с задачей. Создать абстрактный базовый класс Figure с виртуальной функцией - площадь поверхности....


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.02.2014, 14:14     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью #2
Цитата Сообщение от 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 везде передается по значению?
Casper-SC
Эксперт .NET
3486 / 1705 / 175
Регистрация: 27.03.2010
Сообщений: 4,854
Записей в блоге: 1
16.02.2014, 13:23  [ТС]     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью #3
Цитата Сообщение от 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 минуты
И чем плохо передавать строки в методы классов по значению?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.02.2014, 13:36     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью #4
Цитата Сообщение от 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 и теперь он конфликтует со стандартным
*/
Casper-SC
Эксперт .NET
3486 / 1705 / 175
Регистрация: 27.03.2010
Сообщений: 4,854
Записей в блоге: 1
16.02.2014, 13:41  [ТС]     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью #5
Цитата Сообщение от 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::
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.02.2014, 13:53     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью #6
Цитата Сообщение от Casper-SC Посмотреть сообщение
Так что ли?
ну от string то зачем отказываться const std::string&

Цитата Сообщение от Casper-SC Посмотреть сообщение
А есть другой более удобный способ? Кроме как:
нет, но внутри функций можно
C++
1
2
3
4
5
void foo()
{
    using namespace std;
    string s;
}
Yandex
Объявления
16.02.2014, 13:53     Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru