Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 15.01.2016, 19:18   #1 (permalink)
zena
Member
 
Регистрация: 11.11.2010
Сообщений: 79
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 20
По умолчанию Двунаправленное кольцо С++

Такая история. Сдавала в универе работу по классам.
Цитата:
Разработать класс реализующий список (двунаправленное кольцо). Элемент списка содержит информацию о товаре на складе фирмы. Элемент очереди содер-жит наименование товара, цену, количество и дату поставки. В классе реализовать методы поставки на склад, отгрузки со склада и формирования информации по выбранному товару.
Преподу не понравилось решение. Сказал, что это двунаправленная очередь, а ему надо кольцо. Собственно вопрос: как переделать код, что бы было это кольцо(а то что-то в гугле даже про это ничего толкового нету, а решить надо побыстрее).
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;

struct Data{
	Data *Next, *Prev;
	string Name;
	int Price, Count;
	int Day, Month, Year;};
class List{
protected:
	Data *Head, *Tail;
	int Size;
public:
	List()	{
		Head = NULL;
		Tail = NULL;
		Size = 0;	};
	List(Data InputData)	{
		Data *curdata = new Data;
		curdata->Year = InputData.Year;
		curdata->Month = InputData.Month;
		curdata->Day = InputData.Day;
		curdata->Price = InputData.Price;
		curdata->Count = InputData.Count;
		curdata->Name = InputData.Name;
		curdata->Prev = NULL;
		Head = Tail = curdata;
		Size = 1;	};
	List(List &data)
	{
		Head = NULL;
		*this = data;	};
	~List()	{
		while (Head)		{
			Tail = Head->Next;
			delete Head;
			Head = Tail;		};	
};
	void Show(int No)	
{
		Data *curdata = new Data;
		curdata = Head;
		if (No>Size) exit; else		
{
			for (inti = 0; i<No - 1; i++)			
{
				if (curdata->Next != NULL)
					curdata = curdata->Next;			
};
cout<< "Наименованиетовара:" <<curdata->Name.c_str() <<endl;
cout<< "Количество:" <<curdata->Count << "\t Цена:" <<curdata->Price <<endl;
cout<< "Дата поставки:" <<curdata->Day<< "." <<curdata->Month << "." <<curdata->Year <<endl;};	};
	void Delete(int No)	{
		if (No>Size) exit;
		Size--;
		Data *curdata = new Data;
		curdata = Head;
		for (inti = 0; i<No - 2; i++)
			curdata = curdata->Next;
		if (curdata->Next->Next == NULL)
			curdata->Next = NULL;
		else
			curdata->Next = curdata->Next->Next;	
};
	void Add(Data InputData)	{
		Data *curdata = new Data;
		curdata->Year = InputData.Year;
		curdata->Month = InputData.Month;
		curdata->Day = InputData.Day;
		curdata->Price = InputData.Price;
		curdata->Count = InputData.Count;
		curdata->Name = InputData.Name;
		curdata->Next = NULL;
		Size++;
		if (Head != NULL)		{
			curdata->Prev = Tail;
			Tail->Next = curdata;
			Tail = curdata;		}
		else		
{
			curdata->Prev = NULL;
			Head = Tail = curdata;	};};};
int _tmain(intargc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "Russian");
	Data good;
good.Name = "Перфоратор";good.Count = 120;good.Price = 3500000;good.Day = 11;
good.Month = 02;good.Year = 2014;
List Goods(good);
good.Name = "Шуруповрт";	good.Count = 50;good.Price = 1225000;	good.Day = 12;
good.Month = 02;	good.Year = 2014;
	Goods.Add(good);
good.Name = "Дрель";good.Count = 150;	good.Price = 125000;good.Day = 13;
good.Month = 02;	good.Year = 2014;
	Goods.Add(good);
	Goods.Show(1);
	Goods.Show(2);
	Goods.Show(3);
	Goods.Delete(2);
	Goods.Show(1);
	Goods.Show(2);
	system("pause");
	return 0;
}
zena вне форума   Ответить с цитированием

Старый 15.01.2016, 19:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Иногда очень эффективно прочтение схожих топиков

Золотое кольцо России изнутри
Ферритовое кольцо

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:54.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.