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

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

21.11.2011, 19:18. Показов 5784. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ВАРИАНТ 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;
}
Ребят очень надеюсь на вашу помощь)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2011, 19:18
Ответы с готовыми решениями:

Объявите класс TCar, создающий тип "Автомобиль"
Объявите класс TCar, создающий тип «Автомобиль». Определите элементы-данные класса: ― марка автомобиля; ― год выпуска; ...

Объявите класс TGoods, создающий тип «Товар»
Не пойму, что не так. Сравнивает наименование товара и год производства только с последним элементом массива, а нужно со всем массивом....

Объявите класс Book, создающий тип «Книга»
Здравствуйте, уважаемые программисты, прошу помочь с написанием программы. Вот задание (С#): Объявите класс Book, создающий тип...

30
Заблокирован
21.11.2011, 19:35
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;};
           };
0
Заблокирован
21.11.2011, 19:36
Цитата Сообщение от Rayman24 Посмотреть сообщение
Объявите класс TCar, создающий тип – автомобиль.
Сама формулировка фейловая.

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Ну так вот, проектируя классы, ты разрабатываешь инструмент. Всегда думай о том, как именно твоим инструментом будут пользоваться конечные пользователи.
1
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
30.11.2011, 19:00  [ТС]
Кто может написать полностью рабочий код проги?
0
 Аватар для aeshes
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
30.11.2011, 19:07
Rayman24, ваш вариант отличается от найденного вами примера только названием класса. Замените везде слово Goods на Car и используйте)
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
01.12.2011, 16:27  [ТС]
а комментарии к программе плз)
0
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 42
04.12.2011, 10:14  [ТС]
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;
}
 Комментарий модератора 
Используйте теги форматирования кода!


помогите при компиляции ошибки
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
04.12.2011, 10:21
Цитата Сообщение от Rayman24 Посмотреть сообщение
void TGoods::out()
C++
1
void out()
ps/ Если выкладываете код с подписью "При компиляции вываливаются ошибки", будьте добры выкладывать выдаваемые ошибки. Быстрее будет дан ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2011, 10:21
Помогаю со студенческими работами здесь

Объявите класс TBook, создающий тип «Книга»
Есть задание: Объявите класс TBook, создающий тип «Книга». Определите элементы-данные класса: ― автор книги; ― название; ...

Класс TGoods, создающий тип – товар
Задание вот: Объявите класс TGoods, создающий тип – товар. Элементы – данные класса – наименование товара, год производства. ...

Объявите тип запись «Соревнования»
Составьте алгоритм и программу чтения из файла записей. Объявите тип запись «Соревнования», состоящую из следующих полей: номер участника,...

Класс создающий класс и любого его наследника
Есть класс: #pragma once #include &lt;string&gt; #include &quot;Entity.h&quot; class ObjectList { private: //Global List struct List_ {...

Объявите класс CPerson
Из 5 пунктов должна получится программа. 1. Объявите класс CPerson, используемый для хранения информации о конкретном человеке (Ф.И.О....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru