Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2013, 00:27   #1
Vovchik123
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 30
По умолчанию (С++)Динамические экземпляры объектов

Здравствуйте, подскажите в чем я не прав.
Вот задание:
Выполнение лабораторной работы
Создать Класс1, который должен содержать конструктор, деструктор, а также методы извлечения и установки данных.
Создать класс Список, где каждый элемент представляет собой объект Класса1

Класс1 содержит данные из следующего набора:
1.char
2.char *
3.float *
Объекты Класса1 являются элементами списка, который также является классом.
Над списком могут быть выполнены следующие операции:
1.Добавление элемента в начало списка.
2.Удаление элемента в конце списка.
3.Удаление списка.

Код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include "devices.h"

int main(){
	List *list=new List;
	Devices *pDevices;

	 char* a=NULL;
	 char b;
	 float* c=NULL;
	cout<<"************************MENU*********************"<<endl;
	cout<<"* -Press A to add new element                   *"<<endl;
	cout<<"* -Press D to delete the last element           *"<<endl;
	cout<<"* -Press R to delete element with entered data  *"<<endl;
	cout<<"* -Press S to show all list                     *"<<endl;
	cout<<"* -Press Q to quit                              *"<<endl;
	cout<<"*************************************************"<<endl;
	int n;
	n=getch();
	while(n!=113)
	{
	
	if(n==97)
	{
		cout<<"Enter b: ";
		cin>>b;
		cout<<"Press the menu key\n";
		pDevices=new Devices(a,b, c);
		list->add(pDevices);
	}

	if(n==115)
	{
		list->Show();
		cout<<"Press the menu key\n";
	}
	
	if(n==114)
	{
		list->removeDat();
		cout<<"Object deleted!\nPress the menu key\n";
	}
	n=getch();
	}
	system("pause");
	return 0;
}

#include <iostream>
#include <stdio.h>

using namespace std;
 class Devices
 {
 public:
	 char* a;
	 char b;
	 float* c;
	 Devices* next;

	 Devices()
	 {
		 a=NULL;
		 b='0';
		 c=NULL;
	 };
	 Devices( char* , char, float*);
	 ~Devices(){};
	 	
	 char* getValueA(){return a;};	
	 char getValueB(){return b;};
	
	 float* getValueC(){return c;};
	 void setValueC(float* c1){c=c1;};
	 
 };

 
 Devices::Devices( char *A, char B, float* C)
 {
	 
	 b=B;
	 next=NULL;

 }
 

 class List:public Devices

{
public:
	Devices *head;
	List();
	~List();
	void add(Devices *next);
	void remove();
	void removeDat();
	void Show();
	Devices *getLast();
};

List::List():Devices()
{
	head=NULL;
}

void List::add(Devices *next)
{
	next->next=head;
	head=next;
}


Devices *List::getLast()
{
	Devices *curr = head;
	if(curr==NULL)
	{
		return NULL;
	}
	while(curr->next!=NULL)
	{
		curr=curr->next;
	}
	return curr;
}

void List::remove()
{
	Devices *to_remove=getLast();
	Devices *prev=head;
	if(head->next!=NULL)
	{
		while(prev->next!=to_remove)
		{
		prev=prev->next;
	
		}
		delete to_remove;
		prev->next=NULL;
	}
	else
	{
		delete head;
		head=NULL;
	}

}

void List::removeDat()
{

Devices *curr=head;
while(curr!=NULL)
{
free(curr);
curr = head->next;
}
}



void List::Show()
{
	Devices *curr = head;
	if(curr==NULL)
	{
		cout<<"List is empty. \n";
	}
	while(curr!=NULL)
	{
		cout<<"----------------------------"<<endl;
		cout<<"a="<<curr->getValueA()<<endl;
		cout<<"b="<<curr->getValueB()<<endl;
		cout<<"c2="<<curr->getValueC()<<endl;
		curr=curr->next;
	}
}
Vovchik123 вне форума Ответить с цитированием
Старый 21.10.2013, 05:02   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Здравствуйте, подскажите в чем я не прав.
препод не принял?


Код:
class List:public Devices
Самое печальное в этом коде ИМХО то, что список наследует функциональность узла - это неверно. - я вызову для списка setValue() - чего при этом мне ожидать?

Название Devices не понятно, что это? - это девайс или узел списка?
В любом случае, поля должны быть закрытыми:
Код:
	 char* a;
	 char b;
	 float* c;
	 Devices* next;
Но это не такие страшные недочеты для 1-2 курса (чаще бывает хуже).
rrrFer вне форума Ответить с цитированием
Старый 21.10.2013, 15:56   #3
Vovchik123
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 30
По умолчанию

Преподу еще не показывал. Не работает программа, не добавляет/удаляет элементы при нажатии соответствующих клавиш
Vovchik123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вектор указателей на экземпляры класса Aldegid Общие вопросы C/C++ 9 06.05.2012 01:15
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
нужно ли уничтожать динамические объектов типа TButton, TMemo и т.д.? Хамяг Общие вопросы Delphi 5 24.10.2011 02:55
Динамические массивы объектов, проблема с перекрестной индексацией. Василиск Общие вопросы Delphi 16 25.01.2011 00:30
Все экземпляры класса russian-stalker Общие вопросы Delphi 6 21.08.2009 11:16