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

Объявите класс TCar, создающий тип – автомобиль - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
21.11.2011, 19:18     Объявите класс TCar, создающий тип – автомобиль #1
ВАРИАНТ 8

Объявите класс TCar, создающий тип – автомобиль.
Элементы – данные класса – название автомобиля, год выпуска.
Предусмотрите конструкторы класса:
- по умолчанию;
- получающий параметры;
- копирования.
Напишите функции – методы класса:
- для ввода – вывода данных об автомобиле;
- определения, относится ли год выпуска автомобиля к какому – либо, значение которого передается через параметр;
- определения, совпадает ли название автомобиля со значением, передаваемым в виде параметра.
Напишите программу, в которой создайте массив объектов типа TCar, заполните его в диалоговом режиме и найдите в этом массиве все автомобили определенной марки, выпущенные после, например, 1990 года.
Примечание:
Массив объектов класса может быть создан, как статически, так и динамически. Объекты класса, которые будет содержать массив, обязательно должны иметь конструкторы по умолчанию. При создании массива объектов класса для каждого объекта массива будет вызван конструктор по умолчанию.

Ребята помогите с программой, в с++ особо не понимаю...а сдать нужно)вот нашел на сайте что то подобное как переделать под мой вариант?
Объявите класс TGoods, создающий тип – товар.
Элементы – данные класса – наименование товара, год производства.
Предусмотрите конструкторы класса:
- по умолчанию;
- получающий параметры;
- получающий параметр –ссылку на класс TGoods
Напишите функции – методы класса:
- определения, относится ли год производства товара к какому – либо, значение которого передается через параметр;
- определения, совпадает ли наименование товара со значением, передаваемым в виде параметра.
Напишите программу, в которой создайте массив объектов типа TGoods, заполните его в диалоговом режиме и найдите в этом массиве все товары определенного наименования, дата производства которых соответствует, например, 1998 году.
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
#include <iostream>
#include <cstring>
#include <ctime>
#include <cstdlib>
 
class TGoods
{
public:
        TGoods() : year_(0), name_(NULL)
        {
        }
        TGoods(int year, const char *name): year_(year),name_(strcpy(new char[strlen(name) + 1], name))
        {
        }
 
        void set()
        {
                int year;
                char name[25];
 
                std::cout<<"Enter name of goods\t";
                std::cin>>name;
                delete name_;
                name_ = strcpy(new char[strlen(name) + 1], name);
 
                std::cout<<"Enter year\t";
                std::cin>>year;
                year_ = year;
        }
        void TGoods::out()
        {
                std::cout<<"Name of goods\t"<<name_<<std::endl;
                std::cout<<"Year of goods\t"<<year_<<std::endl;
        }
        void setYear(int year)
        {
                year_ = year;
        }
        int getYear() const
        {
                return year_;
        }
        void setName(const char *name)
        {
                delete name_;
                name_ = strcpy(new char[strlen(name) + 1], name);
        }
        const char *getName() const
        {
                return name_;
        }
        
        virtual ~TGoods()
        {
                delete [] name_;
        }
        
        friend std::ostream &operator<<(std::ostream &stream, const TGoods &TGoods)
        {
                return stream << "Name: " << TGoods.getName() << std::endl << "Year: " << TGoods.getYear() << std::endl;
        }
private:
        
        int year_;
        char *name_;
};
 
int main(int argc, char *argv[])
{
        srand(time(NULL));
        int TGoodssCount,year;
 
        std::cout<<"Enter Count Array of Objects ";
        std::cin>>TGoodssCount;
        TGoods *TGoodss = new TGoods[TGoodssCount];
 
        for (int i = 0; i < TGoodssCount; ++i)
        {
                /*TGoodss[i].setName(randomSymbols(9, buffer));
                TGoodss[i].setYear(rand() % 7 + 2005);*/
                TGoodss[i].set();
                std::cout << TGoodss[i];
        }
 
 
          // поиск товара по name:
        std::cout<<"Enter name\t";
        char buffer[25];
        std::cin>>buffer;
        std::cout << std::endl << "Searching for TGoods with name " << buffer << std::endl;
 
        std::cout<<TGoodss[1].getName()<<std::endl;
        for (size_t i = 0; i < TGoodssCount; ++i)
    if (strcmp(TGoodss[i].getName(), buffer)==0)
                std::cout << TGoodss[i];
 
 
  // поиск товара по году:
        std::cout<<"Enter year ";
        std::cin>>year;
        std::cout << std::endl << "Searching for TGoods with year " << year << std::endl;
 
        for (size_t i = 0; i < TGoodssCount; ++i)
    if (TGoodss[i].getYear() == year)
                std::cout << TGoodss[i];
 
        delete [] TGoodss;
        return 0;
}
Ребят очень надеюсь на вашу помощь)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2011, 19:18     Объявите класс TCar, создающий тип – автомобиль
Посмотрите здесь:

C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
C++ Описать класс автомобиль
Разработать класс Car (автомобиль) C++
Класс создающий другой класс (ошибка) C++
C++ Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой автомобиль – внедорожник
C++ Написать класс Автомобиль
C++ Описать базовый класс автомобиль
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mc.Duck
Заблокирован
21.11.2011, 19:35     Объявите класс TCar, создающий тип – автомобиль #2
Rayman24, вот класс:
C++
1
2
3
4
5
6
7
8
9
10
     class TCar{
           string name;
           int make_year;
           public:
           TCar();
           TCar(const TCar& car){name=car.name; make_year=car.make_year;}
           bool Setcar(TCar& car, string name2, int make_year2) {car.name=name2; car.make_year=make_year2;}
           bool issameyear(TCar car, int year_make) {if(car.make_year==year_make) return true; else return false;};
           bool issamename(TCar car, string name2) {if(car.name==name2) return true; else return false;};
           };
Bers
Заблокирован
21.11.2011, 19:36     Объявите класс TCar, создающий тип – автомобиль #3
Цитата Сообщение от Rayman24 Посмотреть сообщение
Объявите класс TCar, создающий тип – автомобиль.
Сама формулировка фейловая.

Преподавателю своему скажите: классы не создают типы. Классы - это и есть типы.
И хотя, формально класс - это тип. Но даже такая формулировка не корректна с точки зрения ООП.

С точки зрения ООП, класс - описание объекта.

Объект, в контексте данной задачи - это автомобиль.

Любой объект имеет параметры. В нашем случае можно сказать: любые автомобили имеют такие параметры, как "марка машины", "дата выпуска" и тд.

Класс лишь описывает объект. Описывает умения объекта, и его параметры.

ООП оперирует абстракциями на уровне классов и объектов, а не на уровне типов и данных.

Твой класс - прост как пробка. Его с нулевыми знаниями можно сваять за 1-2 часа. Информация "как это делается" в любом учебнике для начинающих. Поэтому подсказывать по реализации ничего не буду.
mc.Duck
Заблокирован
21.11.2011, 19:46     Объявите класс TCar, создающий тип – автомобиль #4
Bers, да какой там 1-2 часа - минут 30 с головой хватит)))
Bers
Заблокирован
21.11.2011, 19:49     Объявите класс TCar, создающий тип – автомобиль #5
Цитата Сообщение от mc.Duck Посмотреть сообщение
Bers, да какой там 1-2 часа - минут 30 с головой хватит)))
Я ж специально уточнил - с нулевыми знаниями) На случай, если балбес весь семестр девок щупал, и вообще впервые в жизни услышал о существовании с++, а зачет уже завтра сдавать надо.
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
21.11.2011, 19:51  [ТС]     Объявите класс TCar, создающий тип – автомобиль #6
Пожалуйста можно по подробнее, я совсем не шарю

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Я ж специально уточнил - с нулевыми знаниями) На случай, если балбес весь семестр девок щупал, и вообще впервые в жизни услышал о существовании с++, а зачет уже завтра сдавать надо.
Не надо я на лекциях присутствовал и записывал все. Не мое это просто..
Bers
Заблокирован
21.11.2011, 19:51     Объявите класс TCar, создающий тип – автомобиль #7
Цитата Сообщение от Rayman24 Посмотреть сообщение
Пожалуйста можно по подробнее, я совсем не шарю
Учебник почитать не пробовали?
mc.Duck
Заблокирован
21.11.2011, 19:53     Объявите класс TCar, создающий тип – автомобиль #8
Rayman24, зачем тогда на программиста пошли учиться? Посвятите себя спорту - идите в шахматы)
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
22.11.2011, 06:08  [ТС]     Объявите класс TCar, создающий тип – автомобиль #9
Цитата Сообщение от mc.Duck Посмотреть сообщение
Rayman24, зачем тогда на программиста пошли учиться? Посвятите себя спорту - идите в шахматы)
Будьте так добры помогите кто нибудь...

Добавлено через 10 часов 9 минут
Up!!! )
mc.Duck
Заблокирован
22.11.2011, 13:18     Объявите класс TCar, создающий тип – автомобиль #10
Rayman24, я описал класс в самом первом сообщении!!!
Bers
Заблокирован
22.11.2011, 14:06     Объявите класс TCar, создающий тип – автомобиль #11
mc.Duck, почему твой автомобиль, что бы получить имя, должен самого себя собственному методу в качестве аргумента передавать?


Ты на первый этаж к себе домой тоже через чердак соседнего дома ходишь?
mc.Duck
Заблокирован
22.11.2011, 14:09     Объявите класс TCar, создающий тип – автомобиль #12
Bers, он не себя передает, а переменную типа Tcar, с которой, собственно, и будет сравниваться значение обьекта TCar, который вызвал метод.
Bers
Заблокирован
22.11.2011, 14:13     Объявите класс TCar, создающий тип – автомобиль #13
Цитата Сообщение от mc.Duck Посмотреть сообщение
Bers, он не себя передает, а переменную типа Tcar, с которой, собственно, и будет сравниваться значение обьекта TCar, который вызвал метод.
Забудь про "переменную типа Tcar"

Нет никаких переменных типа *пальцы веером*

Есть только объекты. Которые наделены некими умениями, и предоставляют вызывающей стороне неккие услуги. Все.

Есть объект - автомобиль. У него есть имя. И есть умение, с помощью которого это имя можно изменить.

У меня есть объект сконструированный с помощью твоего класса.
Я хочу заменить ему имя. Я хочу что б его звали "быстрый как молния"

Почему для того, что бы мой автомобиль смог изменить своё собственное имя, он должен самого себя передавать самому себе в качестве аргумента своего собственного метода?
Что это за идиотизм?
mc.Duck
Заблокирован
22.11.2011, 14:17     Объявите класс TCar, создающий тип – автомобиль #14
Bers, ай, точно! Просто, я подумал, что разговор идет про метод "bool issamename".
Спасибо, Bers. В методе "Setname" действительно не надо передавать объект типа
TCar. Еще раз спасибо.
Bers
Заблокирован
22.11.2011, 14:25     Объявите класс TCar, создающий тип – автомобиль #15
mc.Duck, объект в ООП, это не просто "умное хранилище данных".

Это полностью самостоятельная, целостная логическая единица.
Это - полнофункциональный механизм.
Это - инструмент, рассчитанный на выполнение конкретной задачи.

Единственная причина, которая оправдывает создание очередного класса - это облегчение жизни программиста.

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

И как и любой другой инструмент (взять хотя бы самую обычную электро-дрель, или молоток), у этого инструмента есть:

1. Задача, которую он решает.
2. Интерфейс управления.

Ну так вот, проектируя классы, ты разрабатываешь инструмент. Всегда думай о том, как именно твоим инструментом будут пользоваться конечные пользователи.
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
30.11.2011, 19:00  [ТС]     Объявите класс TCar, создающий тип – автомобиль #16
Кто может написать полностью рабочий код проги?
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
30.11.2011, 19:07     Объявите класс TCar, создающий тип – автомобиль #17
Rayman24, ваш вариант отличается от найденного вами примера только названием класса. Замените везде слово Goods на Car и используйте)
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
01.12.2011, 16:27  [ТС]     Объявите класс TCar, создающий тип – автомобиль #18
а комментарии к программе плз)
Rayman24
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
04.12.2011, 10:14  [ТС]     Объявите класс TCar, создающий тип – автомобиль #19
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
#include <iostream>
#include <cstring>
#include <ctime>
#include <cstdlib>
 
class TGoods
{
public:
        TGoods() : year_(0), name_(NULL)
        {
        }
        TGoods(int year, const char *name): year_(year),name_(strcpy(new char[strlen(name) + 1], name))
        {
        }
 
        void set()
        {
                int year;
                char name[25];
 
                std::cout<<"Enter name of goods\t";
                std::cin>>name;
                delete name_;
                name_ = strcpy(new char[strlen(name) + 1], name);
 
                std::cout<<"Enter year\t";
                std::cin>>year;
                year_ = year;
        }
        void TGoods::out()
        {
                std::cout<<"Name of goods\t"<<name_<<std::endl;
                std::cout<<"Year of goods\t"<<year_<<std::endl;
        }
        void setYear(int year)
        {
                year_ = year;
        }
        int getYear() const
        {
                return year_;
        }
        void setName(const char *name)
        {
                delete name_;
                name_ = strcpy(new char[strlen(name) + 1], name);
        }
        const char *getName() const
        {
                return name_;
        }
        
        virtual ~TGoods()
        {
                delete [] name_;
        }
        
        friend std::ostream &operator<<(std::ostream &stream, const TGoods &TGoods)
        {
                return stream << "Name: " << TGoods.getName() << std::endl << "Year: " << TGoods.getYear() << std::endl;
        }
private:
        
        int year_;
        char *name_;
};
 
int main(int argc, char *argv[])
{
        srand(time(NULL));
        int TGoodssCount,year;
 
        std::cout<<"Enter Count Array of Objects ";
        std::cin>>TGoodssCount;
        TGoods *TGoodss = new TGoods[TGoodssCount];
 
        for (int i = 0; i < TGoodssCount; ++i)
        {
                /*TGoodss[i].setName(randomSymbols(9, buffer));
                TGoodss[i].setYear(rand() % 7 + 2005);*/
                TGoodss[i].set();
                std::cout << TGoodss[i];
        }
 
 
          // поиск товара по name:
        std::cout<<"Enter name\t";
        char buffer[25];
        std::cin>>buffer;
        std::cout << std::endl << "Searching for TGoods with name " << buffer << std::endl;
 
        std::cout<<TGoodss[1].getName()<<std::endl;
        for (size_t i = 0; i < TGoodssCount; ++i)
    if (strcmp(TGoodss[i].getName(), buffer)==0)
                std::cout << TGoodss[i];
 
 
  // поиск товара по году:
        std::cout<<"Enter year ";
        std::cin>>year;
        std::cout << std::endl << "Searching for TGoods with year " << year << std::endl;
 
        for (size_t i = 0; i < TGoodssCount; ++i)
    if (TGoodss[i].getYear() == year)
                std::cout << TGoodss[i];
 
        delete [] TGoodss;
        return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!


помогите при компиляции ошибки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2011, 10:21     Объявите класс TCar, создающий тип – автомобиль
Еще ссылки по теме:

Класс TGoods, создающий тип – товар C++
Создать класс транспортные средства, автомобиль, грузовик, пароход и самолет C++
C++ Класс создающий класс и любого его наследника
C++ Классы : Создать класс автомобиль
Создать класс «Автомобиль» C++

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.12.2011, 10:21     Объявите класс TCar, создающий тип – автомобиль #20
Цитата Сообщение от Rayman24 Посмотреть сообщение
void TGoods::out()
C++
1
void out()
ps/ Если выкладываете код с подписью "При компиляции вываливаются ошибки", будьте добры выкладывать выдаваемые ошибки. Быстрее будет дан ответ.
Yandex
Объявления
04.12.2011, 10:21     Объявите класс TCar, создающий тип – автомобиль
Ответ Создать тему
Опции темы

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