@yuharu

Решение задачи ООП (С++)?

Задача:
Напишите программу создания базы данных некоторого магазина ткани который еще торгует и пряжей. Создайте класс, в котором хранится названия и цена. От этого класса наследуется еще 2 класса: первый содержит информацию о производителе ткани,а второй содержит информацию о составе пряжи и метрах в мотке. В каждом из трех классов должен быть метод getdata через который можно получить данные от пользователя с клавиатуры и метод позволяющий выполнить вывод данных на экран.
Мой код. Как в класс-наследник для функции getdata() получить данные из функции getdata класса-родителя?
class shop
{
protected:
	int n1, n2, *price1, *price2;
	char **cloth, **yarn;
public:
	~shop()
	{
		delete [] price1;
		delete [] price2;
		for (int i=0; i<n1; i++)
			delete [] cloth[i];
		for (int i=0; i<n2; i++)
			delete [] yarn[i];
	}
    void getdata() 
	{
		cout<<"Input the number of kinds of cloth: ";
		cin>>n1;
		price1=new int[n1];
		cloth=new char*[n1];
		for (int i=0; i<n1; i++)
			cloth[i]=new char[20];
		cout<<"Input name of cloth and price of it:\n";
		for (int i=0; i<n1; i++)
			cin>>cloth[i]>>price1[i];
		cout<<"Input the number of kinds of yarn: ";
		cin>>n2;
		price2=new int[n2];
		yarn=new char*[n2];
		for (int i=0; i<n2; i++)
			yarn[i]=new char[20];
		cout<<"Input name of yarn and price of it:\n";
		for (int i=0; i<n2; i++)
			cin>>yarn[i]>>price2[i];
	}
void outdata()
	{
		cout<<"In stock shop has the following products at a following price:\n";
		for (int i=0; i<n1; i++)
			cout<<cloth[i]<<" "<<price1[i]<<endl;
		for (int i=0; i<n2; i++)
			cout<<yarn[i]<<" "<<price2[i]<<endl;
	}
};

class shop_cloth:public shop
{
	char **fabricator;
public:
	~shop_cloth()
	{
		for (int i=0; i<n1; i++)
		    delete [] fabricator[i];
	}
	void getdata()
	{
		fabricator=new char*[n1];
		for (int i=0; i<n1; i++)
			fabricator[i]=new char[20];
		cout<<"Input the fabricators of cloth:\n";
		for (int i=0; i<n1; i++)
		{
			cout<<cloth[i]<<" ";
			cin>>fabricator[i];
		}
	}
	void outdata()
	{
		cout<<"The fabricators of cloth:\n";
		for (int i=0; i<n1; i++)
			cout<<cloth[i]<<" "<<fabricator[i];
	}
};

class shop_yarn:public shop
{
	char **consist;
	int *length;
	public:
		~shop_yarn()
		{
			delete [] length;
			for (int i=0; i<n2; i++)
			    delete [] consist[i];
		}
		void getdata()
		{
		    consist=new char*[n2];
			for (int i=0; i<n2; i++)
			    consist[i]=new char[20];
			length=new int[n2];
		    cout<<"Input the consist and the length of yarn:\n";
		    for (int i=0; i<n2; i++)
		    {
			    cout<<yarn[i]<<" ";
				cin>>consist[i]>>length[i];
		    }
		}
		void outdata()
		{
		    cout<<"The consist ant the length of yarn:\n";
		    for (int i=0; i<n1; i++)
			    cout<<yarn[i]<<" "<<consist[i]<<" "<<length[i];
		}
};

void main()
{
	shop ob;
	ob.getdata();
	shop_cloth ob1;
	shop_yarn ob2;
	ob1.getdata();
	ob2.getdata();
	cout<<endl;
	system("pause");
}
  • Вопрос задан
  • 3393 просмотра
Пригласить эксперта
Ответы на вопрос 2
shop::getdata() внутри метода наследника.
Ответ написан
tlito
@tlito
drupal, c++, seo
ваша программа выглядит нерабочей
и у меня она падает на строке:
cin>>fabricator[i];
с сообщением:
segmentation failied: core dumped...
а также в C++ функция main не может быть void, и должна не только быть int но также содержать инструкцию return 0;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы