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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2013, 15:36   #1
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию Управление виртуальной памятью

Необходимо создать структуру данных типа «дек» (очередь с двумя концами), каждый элемент которого занимает 100 кб.

Компилирует без ошибок, но на "case 2" выдает ошибку. Не понимаю((

Код:
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
#include <deque>
#include <iostream>
#include <string.h>
#include <locale.h>
#include <stdio.h>

using namespace std;

#define ELEMENT_SIZE (1024 * 100)//Каждый элемент занимает 100 кб
HANDLE heap;

char* text;

int _tmain(int argc, _TCHAR* argv[])
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	deque <char> v;

	int menu = 0;
	int r = 0;
	int l = 0;

	do
	{
		cout << "1. Проверить, дек пуст/не пуст\n";
		cout << "2. Добавить элемент в левый конец дека\n";
		cout << "3. Добавить элемент в правый конец дека\n";
		cout << "4. Удалить элемент слева\n";
		cout << "5. Удалить элемент справа\n";
		cout << "6. Просмотреть элемент слева\n";
		cout << "7. Посмотреть элемент справа\n";
		cout << "0. Выход\n";

		cin >> menu;

		switch (menu)
		{
			case 1:
				if (v.empty())
					cout << "\nДек пуст\n\n";
				else 
					cout << "\nДек не пуст\n\n";

				break;

			case 2:
				text = (char*)HeapAlloc(heap, 0, ELEMENT_SIZE);

				cout << "\nВведите текст нового элемента: ";
				cin >> text;

				v.push_front(*text); //Добавляем элемент в начало дека
				l = 1;

				cout << "\nЭлемент успешно добавлен\n\n";
			
				break;

			case 3:
					text = (char*)HeapAlloc(heap, 0, ELEMENT_SIZE);

					cout << "\nВведите текст нового элемента: ";
					gets(text);

					v.push_back(*text); //Добавляем элемент в конец дека
					r = 1;

					cout << "\nЭлемент успешно добавлен\n\n";
			
				break;

			case 4:
				if (v.empty())
					cout << "\nДек пуст\n\n";
				else
				{
					HeapFree(heap, 0, text);

					v.pop_front(); //Извлечь из дека первый элемент

					cout << "\nЭлемент успешно удален\n\n";
					l = 0;
				}

				break;

			case 5:
				if (v.empty())
				cout << "\nДек пуст\n\n";
				else
				{
					HeapFree(heap, 0, text);

					v.pop_back(); // Извлечь из дека последний элемент

					cout << "\nЭлемент успешно удален\n\n";
					r = 0;
				}

				break;

			case 6:
				if (l == 0)
					cout << "\nДек пуст\n\n";
				else
					cout << endl << v.front() << "\n"; // Узнаем значение первого элемента
				break;

			case 7:
				if (r == 0)
					cout << "\nДек пуст\n\n";
				else
					cout << endl << v.back() << "\n"; // Узнаем значение последнего элемента
				break;

			case 0:
				return 0;

			default:
				cout << "\nНеверный пункт меню!\n\n";
				system ("pause");
		}
	}while (menu != 0);
}

Последний раз редактировалось Donat_Oshchepkov; 13.12.2013 в 15:45.
Donat_Oshchepkov вне форума Ответить с цитированием
Старый 13.12.2013, 15:45   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Где инициализируется heap?
waleri вне форума Ответить с цитированием
Старый 13.12.2013, 15:51   #3
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию

Забыл))
heap = GetProcessHeap(); так сойдет?
Donat_Oshchepkov вне форума Ответить с цитированием
Старый 13.12.2013, 16:12   #4
Donat_Oshchepkov
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 17
По умолчанию

Еще один вопрос.. Если поставить gets(text) вместо cin >> text, то при запросе ввода текста, текст не вводится
Donat_Oshchepkov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление виртуальной памятью. Курсовая tuul_wq Помощь студентам 0 25.11.2012 20:44
управление памятью galick Помощь студентам 1 27.05.2010 13:14
Проблемы с виртуальной памятью. DeKot Операционные системы общие вопросы 13 29.05.2009 11:10
Управление памятью Raz0r Помощь студентам 4 02.03.2009 18:42
Управление памятью ilham Операционные системы общие вопросы 2 17.12.2008 18:29