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

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

Войти
Регистрация
Восстановить пароль
 
katkat95
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 11
#1

Задания на стеки/очереди (без шаблонных классов stack, queue) - C++

21.05.2014, 10:55. Просмотров 836. Ответов 5
Метки нет (Все метки)

Помогите, пожалуйста. Нужно добавить в очередь нечетные целые числа от -3 до 3. Все числа из очереди извлекать по одному и отрицательные добавлять в стек, положительные выводить на экран. Числа из стека вынимать по одному и печатать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 10:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задания на стеки/очереди (без шаблонных классов stack, queue) (C++):

4 задания по С++ (Бинарные деревья. Стеки,очереди) - C++
1. В текстовом файле записана без ошибок формула вида: цифра или М(формула, формула), или m(формула, формула), где M обозначает функцию...

Как реализовать Stack, Queue, ArrayList? - C++
Реализовать следующие классы: Stack implements PushPopContainer; push добавляет в голову списка, pop забирает из головы списка ...

Сравнение типов шаблонных классов - C++
Добрый день. Есть некоторый шаблонный класс (структура): template<int m, int n> struct A { }; Возьмем некоторый...

Параметры-шаблоны у шаблонных классов - C++
Объясните плз, кто может, для чего используются параметры-шаблоны у шаблонных классов, и как они работают? :) Читаю Прату и застрял на...

Написать программу использующую пользовательские классы Stack, Queue, Deque - C++
Добрый день) совсем иссякли идеи,что можно написать,чтобы программа включала в себя стек,очередь и дек(на массиве),если есть у кого в...

Объявление статических констант шаблонных классов - C++
Что-то я туплю - дан шаблонный класс, принимающий в качестве аргументов шаблона типы Type1 и Type2. В классе есть статическая константа...

5
newbie666
21.05.2014, 11:00
  #2

Не по теме:

Цитата Сообщение от katkat95 Посмотреть сообщение
Помогите, пожалуйста.
А чем тебе помочь то? Вопросов никаких нет, проблемного кода тоже ...
Тут можно помочь только командой: ДЕЛАЙ!

0
katkat95
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 11
21.05.2014, 11:10  [ТС] #3
Проблема в том, что я сама не могу это решить.. вот и прошу помощи
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.05.2014, 12:49 #4
katkat95, Набросал высоко продуктивный стек (:

katkat95, поигрался немного с copy assignable & move assignable. Тестировал на коде:
Кликните здесь для просмотра всего текста
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <chrono>
 
 
template <typename T>
class stack {
public:
    stack(const size_t& default_capasity = 10)
        : capacity(default_capasity), size(0), a(new T[capacity]) { }
        
    stack(const stack& copy) 
        : capacity(copy.capacity), size(copy.size), a(new T[capacity])
    {
        for (size_t i = 0; i < size; ++i)
            a[i] = copy.a[i];
    }
    
    stack(stack&& local) 
        : capacity(local.capacity), size(local.size), a(local.a) 
    {
        local.a = nullptr;
    }
    
    ~stack() { delete a; }
    
    stack<T>& operator=(const stack<T>& copy) {
        capacity = copy.capacity;
        size = copy.size;
        
        delete a;
        a = new T[capacity];
        for (size_t i = 0; i < size; ++i)
            a[i] = copy.a[i];
        
        return *this;
    }
    
    stack<T>& operator=(stack<T>&& copy) {
        capacity = copy.capacity;
        size = copy.size;
        a = copy.a;
        copy.capacity = copy.size = 0;
        copy.a = nullptr;
        
        return *this;
    }
    
    void push(const T& value) {
        if (size >= capacity)
            resize(capacity * 1.6); 
                
        a[size++] = value;
    }
    
    T pop() {
        if (size < 1)
            throw "stack pop: invalid stack size";
            
        return std::move(a[--size]);
    }
    
    size_t getSize() const { return size; }
 
private:
    void resize(const size_t& value) {
        capacity = value;
        if (size >= capacity) size = capacity; // in case of decreasing 
        
        T* copy = new T[value];
        for (size_t i = 0; i < size; ++i)
            copy[i] = std::move(a[i]); // move assignable
        
        delete a;
        a = copy;
    }
 
    size_t capacity;
    size_t size;
    T* a;   
};
 
stack<int> get() {
    const int n = 100000000; // 400 millions bytes
    stack<int> res(n);
    for (size_t i = 0; i < n; ++i) {
        res.push(i);
    }
    return res;
}
 
int main () {
    stack<int> a = std::move(get()), b, c;
    std::chrono::time_point<std::chrono::system_clock> start, end;
    std::chrono::duration<double> duration;
    
    start = std::chrono::system_clock::now();
    b = a;
    end = std::chrono::system_clock::now();
    duration = end - start;
    std::cout << "Copy: " << duration.count() << '\n';
    
    start = std::chrono::system_clock::now();
    c = std::move(a);
    end = std::chrono::system_clock::now();
    duration = end - start;
    std::cout << "Move: " << duration.count() << '\n';
}

Результат ожидаемый, но все же очень греет душу (:
Bash
1
2
3
4
ruslan@TFTM-K53TA:~/Programming/c++/cyberforum$ make && ./main 
clang++ main.cpp -o main -std=c++11 -W
Copy: 5.00565
Move: 1.132e-06
Копирование 400 миллионов байт обошлось в 5 секундное зависание, а перемещение указателя в 1 микросекунду (:
0
katkat95
0 / 0 / 0
Регистрация: 20.03.2014
Сообщений: 11
21.05.2014, 18:37  [ТС] #5
Спасибо большое)) но ведь эта программа не выполняет условие, которое я написала вверху
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
22.05.2014, 03:01 #6
katkat95, зато у тебя уже есть стек, осталось написать очередь по примеру стека (:
0
22.05.2014, 03:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 03:01
Привет! Вот еще темы с ответами:

Не получается создать объекты шаблонных классов - C++
#include &lt;iostream&gt; using namespace std; template&lt;class T&gt; class My_Class1 { private: char name; My_Class1 A; public: ...

Зачем нужны стеки (STACK) ? - C++
Добрый день, я уже 1,5 года учусь программировать на разных языках, в основном таких как pascal, c++, php, и хочу в каждом научиться...

queue удаление из очереди - C++
Создать однонаправленную очередь с числами в диапазоне от –50 до +50. Удалить из очереди все элементы, расположенные до минимального ...

Отделить описание шаблонных функций и классов от реализации - C++
скажите можно ли как то все таки отделить описание шабонных функций и классов от реализации? уж больно неудобно всю рализацию в h-нике...


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

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

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