Форум программистов, компьютерный форум CyberForum.ru

Добавлении данных из бинарного файла в очередь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Распечатать те слова, которые являются обращениями других слов в этом предложении http://www.cyberforum.ru/cpp-beginners/thread119556.html
1. Ввести предложение, слова в котором разделены пробелами и запятыми. Распечатать те слова, которые являются обращениями других слов в этом предложении. Если нужных слов нет - сообщить об этом. 2. Ввести строку, состоящую только из цифр и букв. Распечатать те группы цифр, в которых цифра 7 встречается не более двух раз. (Группа цифр - это последовательность цифр, обрамленная буквами.) ...
C++ Кто-то сталкивался с таким заданием? Распечатать список учеников,фамилии которых начинаются на букву В, с указанием даты их рождения. Как сделать что бы отбор шел фамилий именно на "В" и в дальнейшем отправить эти фамилии на печать??? http://www.cyberforum.ru/cpp-beginners/thread119552.html
C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
написать программы! Вот задания! Я болел и просто не успею все зделать! 1)Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами элементы массива с четными и нечетными индексами (т.е. те элементы массива, которые стоят на четных местах, поменяйте с элементами, которые стоят на нечетных местах). 2)Даны два массива, упорядоченных по возрастанию: А и B. Сформируйте массив C,...
C++ C++, одномерный массив, сортировка.
Приветствую! Подскажите, как сформировать массивы X и Y в задании: Заданы массив {bi}; i=1,n. Подсчитать количество нулевых элементов массива. Сформировать новые массивы – X,Y, содержащие ранжированные элементы исходного массива: X – 1-ый элемент – самый большой, последний элемент – второй с наибольший элемент, 3-й элемент – третий наибольший, предпоследний элемент – четвертый наибольший и...
C++ Строки.Текстовый файл. http://www.cyberforum.ru/cpp-beginners/thread119513.html
Есть файл с 5 строками. Задача состоит в том, чтобы использовать каждую строку по очереди, т.е. как я понимаю нужно в переменную по очереди записывать каждую следующую строку в цикле, а вот сделать это не получается? Или есть какой-нибудь другой вариант? Спасибо.
C++ Модуль разности сумм элементов (Прошу решения) Задан массив, определить значение k, при котором сумма |(A(1)+A(2)+…+A(k)) - (A(k+1)+…+A(N))| минимальна (то есть минимален модуль разности сумм элементов в правой и левой части, на которые массив делится этим k). Шаблон выполнения приложил. нужно расписать все...а я не понимаю,с чего начать...тяжело пока. Теория Анализ задачи и алгоритм Описание программной реализации ... подробнее

Показать сообщение отдельно
Marie
Сообщений: n/a
20.04.2010, 16:02     Добавлении данных из бинарного файла в очередь
Я пишу данные очереди в бинарный файл, потом считываю, отладчик пишит, что данные считаны, однако в функции enqueue происходит вылет проги. Помогите с идеями, я уже замучалась.
Код
Очередь: 

template <typename Item>
class QueueTP
{
private:
	enum {Q_SIZE = 10};
	class Node 
	{
	public:
		Item item;
		Node *next;
		Node (const Item & i): item(i), next(0) {}
	};

	Node *front;
	Node *rear;
	int itsSize; //текущее кол-во в очереди
	const int qsize; // макс. кол-во элементов
	QueueTP(const QueueTP & q) : qsize(0) {}
	QueueTP & operator=(const QueueTP & q) {return *this;}
public:
	QueueTP (int qs = Q_SIZE);
	~QueueTP();
	bool writeFile(std::ofstream & os);
	bool readFile(std::ifstream & is);
	void enqueue(const Item &item);
	void dequeue(Item &item);
	inline int size() const { return itsSize; }
	void clear();
	bool isempty() const


                         ...



Функция clear() для очистки всей очереди для считывания.

template <typename Item>
bool QueueTP<Item>::writeFile(std::ofstream & os)
{
	Node *temp = front;
	cout << "File" << endl;
	cout << temp->item;
	while (temp)
	{

		os.write(reinterpret_cast<char *> (&temp->item), sizeof(Item));
		temp = temp->next;
	}
	return true;
}

template <typename Item>
bool QueueTP<Item>::readFile(std::ifstream & is)
{
	clear();
	Item tmp;
	while (!is.eof())
	{
		is.read(reinterpret_cast <char *> (&tmp), sizeof(tmp));
		//enqueue(tmp);  //вот здесь все и рушится, точнее в самой функции
	}
	return true;
}





template <typename Item>
void QueueTP<Item>::enqueue(const Item &item)
{
	if (isfull())
		throw ExcEnqueue();
	Node *add = new Node(item); //создали узел node обвал проги!!!
	if (add == NULL)
		throw ExcEnqueue();
	itsSize++;
	if (front == 0)
		front = add; 
	else
		rear->next = add;
	rear = add;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru