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

Инкапсуляция, иттераторы, абстрактные списки на С - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В MVS использование генератора случайных чисел http://www.cyberforum.ru/cpp-beginners/thread168750.html
Задача такова - Даны n прямоугольников со сторонами, параллельными осям координат, заданных координатами своей левой нижней и правой верхней вершин и m точек. Найти пару прямоугольник - точка, для которой расстояние от точки до вершины прямоугольника минимально. Исходные данные получить с помощью генератора случайных чисел. Решение проиллюстрировать графически. Все бы ничего, но не знаю как...
C++ Упорядочивание массива дан массив вещественных чисел требуется написать функции, которые 1. упорядочивают по убыванию 2.упорядочивают по возрастанию 3.создадут новый массив, элементы которого будут те элементы первого массива, которые больше среднего значения всех элементов http://www.cyberforum.ru/cpp-beginners/thread168747.html
размещение файлов в оперативной памяти C++
Я бы хотел узнать, есть ли способ разместить в оперативной памяти какие нибудь файлы. Например текстовый и какой нибудь исполнительный exe файл, который делает с текстовым определенные действия. Затем в этой же оперативной памяти выполнить программу на этом файле. То есть весь смысл в том, чтобы все это дело работало не на жестком диске, а в оперативной памяти.
про списки и многочлен C++
добрый вечер.тут до завтра задачку решить надо.не очень понимаю само условие. Многочлен P(x)=anxn + an-1xn-1 +...+ a1x + a0 с целыми коэффициентами можно представить в виде списка, причем если ai=0, то соответствующее звено не включать в список. Определить логическую функцию Equal(p, q), проверяющие на равенство многочлены p и q не доходит до меня то, как можно проверить элементы списка по...
C++ Абстрактный класс. Наследование http://www.cyberforum.ru/cpp-beginners/thread168723.html
class polygon{ int height, width, point p; e_color color; public: virtual ~polygon(){} virtual void draw() = 0; virtual void move() = 0; virtual void rotation() = 0; };
C++ Опишите пожалуйста мою программу Может кто рассказать что и как делает программа,и написать комментарии?\ Буду очень признателен #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<fstream.h> #include<string.h> #include<iomanip.h> #include<stdio.h> подробнее

Показать сообщение отдельно
Selina
122 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 23
27.09.2010, 00:06  [ТС]     Инкапсуляция, иттераторы, абстрактные списки на С
Эх, меня завернули.
Предложила следующее решение:
Задание: есть структуры разных "животных", создается функция-инициализатор этих объектов. Формируется абстрактный список этих животных и пользуясь этим списком, надо животных "покормить", при помощи итератора.

В данной задаче предполагается реализация циклического списка.
Глобальные переменные программы:
head - указатель на начало списка;
n - число элементов.

Абстрактный список сформируем при помощи следующей структуры:
struct list{
void *pointer;
int code;
list *prev;
list *next;
};

prev, next - указатели на последующий и предыдущий элемент списка;
pointer - указатель на "животное";
code - "код" животного, иначе не будет возможности "разыменовывать" pointer.

Предположим, что у всех животных есть следующие параметры: имя, вес, уровень настроения.
Тогда, возможно создать функции-итераторы: по критериям имени, веса и настроения.
В качестве входных параметров будет использоваться ссылка на элемент списка. Возвращать функция будет ссылку на последующий элемент.
Если функции передать во входных параметрах 0, то она начнет поиск с "головы" списка.
Если функция не нашла последующего элемента в списке, она вернет 0.
В начале работы итератора по адресу из поля pointer извлекается объект.

Далее описывается функция "кормления" животных, входными параметрами которой является некоторое число, в зависимости от которого будет вызываться итератор.
На что получила ответ:
Разыменовывать животных - не круто, можно все инкапсулировать при помощи указателей на функции. Если ты получше подумаешь, то обойдешься одной абстрактной структурой и несколькими конкретными для каждого типа животного. Все животные должны иметь разные параметры. И не обязательно все животные должны обрабатываться всеми итераторами. Если параметра вдруг нет, то итератор пропускает этот элемент списка. Твоя задача на "С" изобразить наследование из "С++", а не написать программу на структурном языке.
Как выкидывать не нужные элементы в итераторе и изобразить наследование с помощью структур, я представляю.
А вот обойтись без разыменовывания, а заменить это указателем на функции, я не представляю.
 
Текущее время: 01:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru