Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Graduskipeniya
0 / 0 / 0
Регистрация: 18.05.2017
Сообщений: 6
1

Классы и конструктор по умолчанию/с параметрами

18.05.2017, 04:24. Просмотров 428. Ответов 7

Помогите пожалуйста!
Необходимо сконструировать класс с заданным набором свойств. В данном случае, касс содержит следующие поля: продукт, категория, количество, цена. Необходимо, чтобы вычислялась и полная стоимость (кол-во X цена).

При компиляции выходят ошибки. Ошибка 4996 ('strcpy') и ошибка связанная с тем, что у меня не получается вычислить полную стоимость.


Catalog.h

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
#pragma once
#ifndef Catalog_H
 
#include "stdafx.h"
#include <memory.h>
# include <iostream>
#include <string.h>
 
#define MAX_STRING_LEN 255
using namespace std;
 
class Catalog
{
protected:
    char* product;
    char* category;
    int price;
    int quantity;
 
public:
    void init();
    void show();
    void cost();
 
    void setProduct(char * _product);
    void setCategory(char * _category);
    void setPrice(int  _price);
    void setQuantity(int _quantity);
 
    char * getProduct();
    char * getCategory();
    int getPrice();
    int getQuantity();
 
    Catalog();
    Catalog(char * _product, char * _category, int _price, int _quantity);
 
};
 
#endif

Catalog.cpp

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
#include "stdafx.h"
#include "catalog.h"
#include <string.h>
 
void Catalog::init()
{
    product = new char[MAX_STRING_LEN];
    memset(product, 0, MAX_STRING_LEN);
    category = new char[MAX_STRING_LEN];
    memset(category, 0, MAX_STRING_LEN);
    price = 0;
    quantity = 0;
}
 
Catalog::Catalog()
{
    init();
    cout << "Constructor with default params\n" << endl;
}
 
 
Catalog::Catalog(char* _product, char* _category, int _price, int _quantity)
{
    init();
    setProduct(_product);
    setCategory(_category);
    setPrice(_price);
    setQuantity(_quantity);
    printf("Constructor with params\n");
}
 
//setters
void Catalog::setProduct(char* _product)
{
    if (_product == NULL)
    {
        printf("_product == NULL");
        return;
    }
    strcpy(product, _product);
}
 
void Catalog::setCategory(char* _category)
{
    if (_category == NULL)
    {
        printf("_product == NULL");
        return;
    }
    strcpy(category, _category);
 
}
 
void Catalog::setPrice(int _price)
{
    if (_price == NULL)
    {
        printf("_price ==NULL");
        return;
    }
 
    price = _price;
}
 
void Catalog::setQuantity(int _quantity)
{
    if (_quantity == NULL)
    {
        printf("_price ==NULL");
        return;
    }
 
    quantity = _quantity;
}
 
//void function other*
 
//getters
char* Catalog::getProduct()
{
    return product;
}
 
char* Catalog::getCategory()
{
    return category;
}
 
int Catalog::getPrice()
{
    return price;
}
 
int Catalog::getQuantity()
{
    return quantity;
}
 
 
//implement show method
void Catalog::show()
{
    printf("product = %s | category = %s | price = %d | quantity = %d \n", getProduct(), getCategory(), getPrice(), getQuantity());
}

Catalog-main.cpp

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
// Catalog-main.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <memory.h>
#include <iostream>
#include <string>
#include "catalog.h"
 
void total_price(Catalog** catalogs, int size) {
    int i;
    int totalprice = 0;
    for (i = 0; i < size; i++) {
    totalprice = Price*Quantity;
    }
    catalogs[i]->show();
    cout << " /n Total prace for i - th product: " << totalprice << " / n";
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    //default constructor
    Catalog Catalog1;
    Catalog1.setProduct("Drink_H2O");
    Catalog1.setCategory("beverages");
 
    Catalog1.setPrice(1);
    Catalog1.setQuantity(19);
 
    Catalog1.show();
 
    //constructor with params
    Catalog Catalog2("Oil drill", "Industrial tools", 1000000, 1);
    Catalog2.show();
 
    int size;
    cout << "Please enter the dimension of the array : ";
    cin >> size;
 
 
    Catalog** catalogs = new Catalog*[size];
 
    char *product = new char[MAX_STRING_LEN];
    memset(product, 0, MAX_STRING_LEN);
    char *category = new char[MAX_STRING_LEN];
    memset(category, 0, MAX_STRING_LEN);
    int price = 0;
    int quantity = 0;
 
    for (int i = 0; i < size; i++)
    {
        catalogs[i] = new Catalog();
 
        cout << "Please enter product name: ";
        cin >> product;
        catalogs[i]->setProduct(product);
        cout << "Please enter category: ";
        cin >> category;
        catalogs[i]->setCategory(category);
        cout << "Please enter price: ";
        cin >> price;
        catalogs[i]->setQuantity(quantity);
        cout << "Please enter quantity: ";
        cin >> quantity;
 
        cout << "*****************************\n";
    }
 
    for (int i = 0; i < size; i++)
        catalogs[i]->show();
 
 
    cout << "\n List and total price: ";
    total_price(catalogs, size);
 
    system("pause");
}
Заранее, благодарю за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2017, 04:24
Ответы с готовыми решениями:

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно»
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать...

Конструктор с параметрами по умолчанию
пытаюсь создать класс с параметрами по умолчанию(я да, надеюсь, что я не...

Задача на классы, конструктор с параметром и по умолчанию
Скомпилировал, запустил. Добавляю новые элементы... и все. Программа...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром?
Добрый день, сразу к делу, есть некий класс class some { int x; public:...

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?
Можно ли использовать конструктор по умолчанию и конструктор инициализации...

7
Antikl
с++
298 / 290 / 154
Регистрация: 15.07.2015
Сообщений: 1,555
Завершенные тесты: 6
18.05.2017, 05:48 2
эм нужен деструктор в первую очередь вот такой к примеру
C++
1
2
3
4
5
~Catalog()
{
   delete [] product ;
    delete[]category;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
18.05.2017, 09:25 3
Цитата Сообщение от Graduskipeniya Посмотреть сообщение
Ошибка 4996 ('strcpy') и ошибка связанная с тем, что у меня не получается вычислить полную стоимость.
Выложите текст ошибок и номера строк на которые они ругаются
1
Graduskipeniya
0 / 0 / 0
Регистрация: 18.05.2017
Сообщений: 6
19.05.2017, 00:20  [ТС] 4
Вывод шибок:


1>------ Сборка начата: проект: Catalog, Конфигурация: Debug Win32 ------
1> Catalog.cpp
1>c:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp(40): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\windows kits\10\include\10.0.10240.0\ucrt\string.h(119): note: см. объявление "strcpy"
1>c:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp(50): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\windows kits\10\include\10.0.10240.0\ucrt\string.h(119): note: см. объявление "strcpy"
1> Catalog-main.cpp
1>c:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp(63): error C2065: catalog: необъявленный идентификатор
1>c:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp(63): error C2228: выражение слева от ".totalprice" должно представлять класс, структуру или объединение
1> c:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp(63): note: тип: unknown-type
1> Создание кода...
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========






Список ошибок в файле Catalog.h:

СерьезностьКодОписаниеПроектФайлСтрокаСостояние подавления
Ошибка (активно) идентификатор "totalprice" не определенCatalogc:\Users\Ekaterina\Documents\Visual Studio 2015\Projects\Catalog\Catalog\Catalog\Catalog-main.cpp63 
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp40 
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp50 
ОшибкаC2065catalog: необъявленный идентификаторCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 
ОшибкаC2228выражение слева от ".totalprice" должно представлять класс, структуру или объединениеCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 





Список ошибок в файле Catalog.cpp:

СерьезностьКодОписаниеПроектФайлСтрокаСостояние подавления
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp40 
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp50 
ОшибкаC2065catalog: необъявленный идентификаторCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 
ОшибкаC2228выражение слева от ".totalprice" должно представлять класс, структуру или объединениеCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 





Список ошибок в файле Catalog-main.cpp:

СерьезностьКодОписаниеПроектФайлСтрокаСостояние подавления
Ошибка (активно) идентификатор "totalprice" не определенCatalogc:\Users\Ekaterina\Documents\Visual Studio 2015\Projects\Catalog\Catalog\Catalog\Catalog-main.cpp63 
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp40 
ОшибкаC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.Catalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog.cpp50 
ОшибкаC2065catalog: необъявленный идентификаторCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 
ОшибкаC2228выражение слева от ".totalprice" должно представлять класс, структуру или объединениеCatalogc:\users\ekaterina\documents\visual studio 2015\projects\catalog\catalog\catalog\catalog-main.cpp63 

Добавлено через 1 час 55 минут
Подскажите, как сделать так, чтобы класс объявлялся в catalog.h, а цена подсчитывалась в catalog-main.cppи выводилась внизу таблицы по формуле сообразной price*quantity? При этом первоначально должна выводиться таблица без подсчета стоимости, а потом- с подсчетом.
0
Antikl
с++
298 / 290 / 154
Регистрация: 15.07.2015
Сообщений: 1,555
Завершенные тесты: 6
19.05.2017, 06:46 5
Цитата Сообщение от Graduskipeniya Посмотреть сообщение
1> c:\program files\windows kits\10\include\10.0.10240.0\ucrt\string.h(119): note: см. объявление "strcpy"
дамаю надо обьявлять так std::strcpy();
0
Kastaneda
Jesus loves me
Эксперт С++
4940 / 3016 / 346
Регистрация: 12.12.2009
Сообщений: 7,612
Записей в блоге: 2
Завершенные тесты: 1
19.05.2017, 07:04 6
По-русски написано же
Цитата Сообщение от Graduskipeniya Посмотреть сообщение
To disable deprecation, use _CRT_SECURE_NO_WARNINGS
0
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
19.05.2017, 09:30 7
Graduskipeniya, Graduskipeniya, добавьте перед #include
C++
1
#define _CRT_SECURE_NO_WARNINGS
в каждый файл
0
Graduskipeniya
0 / 0 / 0
Регистрация: 18.05.2017
Сообщений: 6
20.05.2017, 14:06  [ТС] 8
Не подскажите, как сделать так, чтобы высчитывалась общая стоимость продукта с учетом количества (стоимость умножить на количество)? Чтобы выводилась исходная таблица с наименованием продукта, категории, кол-ва, стоимости и таблица с добавленным столбцом или записью под каждой строкой об общей стоимости.

Чтобы было так:

// Конструктор по умолчанию

Продукт | Категория | Количество | Цена |
Лайм | Напиток | 2 | 40 |

// Конструктор с параметром

Продукт | Категория | Количество | Цена |
Тостер | Кух. тех. | 3 | 2500 |



Продукт | Категория | Количество | Цена | Итого (Стоимость)
Лайм | Напиток | 2 | 40 | 80

Продукт | Категория | Количество | Цена | Итого (Стоимость)
Тостер | Кух. тех. | 3 | 2500 | 7500


ИЛИ


Продукт | Категория | Количество | Цена |
Лайм | Напиток | 2 | 40 |

Итого (Стоимость): 80


Продукт | Категория | Количество | Цена |
Тостер | Кух. тех. | 3 | 2500 |

Итого (Стоимость): 7500
0
20.05.2017, 14:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2017, 14:06

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и...

Конструктор с параметрами
Забыл как выводить конструктор с параметрами, пробую так не выходит. ...

Конструктор с параметрами
Доброе время суток! Суть вопроса вот в чем: Есть класс Game, в котором...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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