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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 448
#1

Очередь из разнородных элементов - C++

27.05.2011, 06:19. Просмотров 826. Ответов 3
Метки нет (Все метки)

Есть такая задача:
Моделировать очередь (руками), в качестве элементов которой могут использоваться числа и слова. Операции: добавление элемента, удаление элемента, печать элементов. Создать класс - потомок, который содержит процедуру сортировки слов по алфавиту. Тестировать полученную модель. В отчете представить структуру использованных классов и обосновать выбранн структуру представления данных
-------------------------------------------------------------------------------------------
Мне непонятна вообще технология подхода к ее решению. Ну скажем, очередь можно смоделировать как "руками" так и с помощью STL. Но разнородные элементы? Пытался найти в инете подходы к этому
Предлагают создать список(в нашем случае можно очередь) из указателей общего вида типа void . Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class GenericList // список указателей общего вида void *
{
public:
    void addToList (void * newElement);
    void * firstElement();
private:
    GenericLink * firstLink;
};
class GenericLink
{
public:
    void    * value;
    GenericLink * nextLink;
};
Теперь там предлагают " определить подкласс класса общего вида и изменить типы аргумента и результата в методах, возвращающих элемент списка. В любом случае фактическую работу выполняет родительский класс."
C++
1
2
3
4
5
6
7
8
9
10
11
12
class WindowList : public GenericList
{
public:
    void addToList (Window * newElement)
     {
      GenericList::addToList (newElement);
     }
    Window * firstElement ()
     {
      return (Window *) GenericList::firstElement;
     }
};
Но далее в том же источнике гоаорится "Но реализация требует определения подклассов как для класса List, так и для класса Link, а также, вероятно, создания новых классов-итераторов"
Годится и наилучший ли это подход к решению сформулированной задачи в моем случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2011, 06:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Очередь из разнородных элементов (C++):

Очередь из разнитипных элементов - C++
Помогите пожалуйста, задаче не хочет выводить метод speek(). Ошибка у меня в int main()после того как я объявила указатель на очередь ...

Добавление элементов в очередь - C++
Помогите реализовать добавление элементов в структуру-очередь (что бы добавить новый элемент нужно просканировать очередь по указателю...

Реализовать добавление элементов в очередь - C++
Помогите сделать,кто знает: Создать очередь случайных чисел. Реализовать добавление элементов в очередь, затем вывод очереди и удаление...

Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.) - C++
Помогите пожалуйста написать очередь. Есть Температура double и ее тип int ну и нужно сделать очередь, чтобы добавляло, удаляло, читало....

Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете - C++
Сформировать очередь по файлу целых чисел. Промоделировать очередь в супермаркете. В каждый момент времени происходит одно из событий:...

Задача на очередь (вывод сообщения, что очередь пуста) - C++
Доброго дня! Есть задачка на очередь, которая работает нормально, только надо добавить код, чтобы выводил сообщение, что очередь пуста.....

3
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
27.05.2011, 09:35 #2
eugrita, немного не понял. Нам нужно в очереди хранить одновременно и строки, и числа? Или наша очередь в один момент времени может хранить только строки, а в другой - только числа?
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
27.05.2011, 11:19 #3
я понял так, что тебе надо хранить элементы разного типа в контейнере? вот я чё то наколбасил, вроде работает даже

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
 
class ListItem
{
private:
    void*       value;
public:
    template <typename T>
    ListItem(const T& Q)
    {
        T* tmp = new T(Q);
        value = (void*)tmp;
    }
 
    void*   operator*()
    {
        return value;
    }
};
 
int main()
{
 
    vector<ListItem> test;
    string tmp("yrtyrtyrt");
 
    test.push_back(34);
    test.push_back(97);
    test.push_back(tmp);
    tmp = "dfhdheherh";
    test.push_back(tmp);
    tmp = "dfgdfg";
    test.push_back(tmp);
 
    for (int i = 0; i != 2; i++)
    {
        cout << *static_cast<int*>(*(test[i]));
    }
 
    for (int i = 2; i != 5; i++)
    {
        cout << *static_cast<string*>(*(test[i])) << endl;
    }
 
 
 
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,544
Завершенные тесты: 3
27.05.2011, 11:22 #4
pito211, Use boost::any...
0
27.05.2011, 11:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2011, 11:22
Привет! Вот еще темы с ответами:

Реализовать очередь с операциями вставки и удаления элементов - C++
Реализовать очередь с операциями вставки и удаления элементов (вставка в начало очереди, удаление с конца очереди) Помогите плииз..

Очередь С++ Проблема с удалением элементов класса очереди - C++
Разбираюсь с очередью. Не могу понять, где совершил ошибку: при компиляции компилятор ругается на необработанное исключение при удалении...

Изменить удаление и добавление элементов в очередь по правилу FIFO. - C++
Необходимо изменить удаление и добавление элементов в очередь (функции push и pop), по правилу первым вошёл, первым вышел главная ...

Создать очередь, написать функции для добавления/удаления элементов - C++
Добрый. Помогите, пожалуйста. Задание: Разработать функции, позволяющие: 1)создать очередь; 2)добавлять в нее элементы; 3)извлекать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru