Всем привет. Такая проблема: нет возможности заполнить массив структур - программа тут же заканчивается, предлагая закрыть окно. Подскажите, пожалуйста.
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
class CashMachine
{
private:
struct product
{
int productCode;
string productName;
double price;
int quantity;
};
string departmentName;
double amountWithoutTax;
double tax;
double amountWithTax;
int size;
product** products;
public:
CashMachine()
{
size = 5;
products = new product * [size];
departmentName = "Назва відділення";
}
void printDepartmentName()
{
cout << departmentName << endl;
}
void fillingTheCashMachine()
{
for (int i = 0; i < size; i++)
{
cout << "Заповнення інформації про товар " << i + 1 << endl;
cout << "Укажіть код товару: ";
cin >> products[i] -> productCode;
cout << "Укажіть назву товару: ";
cin >> products[i] -> productName;
cout << "Укажіть ціну товару: ";
cin >> products[i] -> price;
cout << "Укажіть кількість цього виду товару: ";
cin >> products[i] -> quantity;
}
}
double findAmountWithoutTax()
{
for (int i = 0; i < size; i++)
{
amountWithoutTax = products[i] -> price * products[i] -> quantity;
}
return amountWithoutTax;
}
double findTax()
{
for (int i = 0; i < size; i++)
{
tax = amountWithoutTax * 0.18;
}
return tax;
}
double findAmountWithTax()
{
for (int i = 0; i < size; i++)
{
amountWithTax = amountWithoutTax + tax;
}
return amountWithTax;
}
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
CashMachine a;
a.printDepartmentName();
a.fillingTheCashMachine();
return 0;
}
Падает, потому-что в products[i]
- случайный указатель. Вы этим указателям не назначили ничего.
Тип массива нужно поменять из product** products;
в product * products;
. Выделяете память :
products = new product [size];
И обращения products[i]->
меняем на точку products[i].
.
И деструктор не забываем написать. В нём delete[]products;
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Язык программирования с++Нужно вставить надпись
Начал изучать C++ Builder 103 и сразу столкнулся с непонятной ошибкой
Друзья! Подскажите, пожалуйста, наиболее элегантный способ следзадачи: