Форум программистов, компьютерный форум, киберфорум
Наши страницы

Инкапсуляция, иттераторы, абстрактные списки на С - 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 с целыми коэффициентами можно представить в виде списка, причем если...
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; ...
C++ Опишите пожалуйста мою программу Может кто рассказать что и как делает программа,и написать комментарии?\ Буду очень признателен #include<iostream.h> #include<conio.h> #include<stdlib.h> #include<fstream.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 извлекается объект.

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