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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 20:47   #1
Дырдин
Пользователь
 
Аватар для Дырдин
 
Регистрация: 26.09.2009
Сообщений: 81
По умолчанию Не добавляется элемент в очередь

Вот код :

Код:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
class list{
public:
	list *head;
	list *tail;
	list *next;
	int data;
	virtual void add(int raiting) = 0;
	virtual void show() = 0;
	virtual void retrieve() = 0;
	virtual inline void erase(char *str) = 0;
};

class queu: public list{
public:
	void add(int raiting);
	void show();
	void retrieve();
	inline void erase(char *str);
};

void queu::erase(char *str)
{
	if(head == tail){
		cout << str << " is clear!" << endl;
	}
	else{
		head = head->next;
		erase(str);
	}
}
void queu::add(int element)
{
	list *item = new queu;
	if(!item) cout << "Memory error!!";
	item->data = element;
	if (tail) tail->next = item;//Тут ругается
	tail = item;	
	item->next = NULL;
	if(!head) head = tail;
}

void queu::retrieve()
{	
	if(!head){
		cout << ">>> Queu empty!" << endl;
	}
	else{
		int tmp;
		tmp = head->data;
		head = head->next;
	}
}

void queu::show()
{	
	if(head != tail){		
		cout << "Data = " <<  head->data << endl;
		head = head->next;
		show();
	}
}

void help();

void in_action(queu &s, char action[10])
{
	if(strstr("add", action)){
		int element;
		cout << ">>> What element to add? = ";
		cin >> element;
		s.add(element);
	}
	else if(strstr("retr", action)){
		s.retrieve();
	}
	else if(strstr("show", action)){
		cout << endl;
		queu q = s;
		q.show();
	}
	else if(strstr("clear", action)){
		s.erase("Queu");
	}
	else if(strstr("help", action)){
		help();
	}
}

int main()
{
	system ("color 74");	
	queu s;
	while(true){
		char action[10];
		cout << ">>> Input action = ";
		cin >> action;
		in_action(s, action);
		cout << "\n";
	}
}

void help()
{
	cout << endl << "Operations :" << endl;
	cout << "\t* help - help" << endl;
	cout << "\t* add  - add element in queu" << endl;
	cout << "\t* show  - print on screen elements of queu" << endl;
	cout << "\t* retr  - retrieve element of queu" << endl;
	cout << "\t* clear - clear queu" << endl;
	cout << "\t* close - close application" << endl << endl;
}
Ругается на эту строчку if (tail) tail->next = item;
Непонятно почему(((
Дырдин вне форума Ответить с цитированием
Старый 20.04.2010, 22:00   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Как именно ругается?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 22.04.2010, 07:31   #3
Дырдин
Пользователь
 
Аватар для Дырдин
 
Регистрация: 26.09.2009
Сообщений: 81
По умолчанию

Пишет, необработанное исключение
Дырдин вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь C++ svetikzo Помощь студентам 2 23.01.2010 09:53
Очередь skiffter Помощь студентам 2 03.12.2009 17:39
Очередь Юлькин Общие вопросы C/C++ 4 30.05.2009 16:00
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30
Не добавляется SqlDataAdapter на форму xOKkei Общие вопросы .NET 1 24.02.2009 17:01