Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 83

в очереди последний элемент заменяет на =. как это исправить?

17.04.2017, 15:42. Показов 994. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
108
109
110
111
112
113
#ifndef QUEUE_H
#define QUEUE_H
#include <cassert> // для assert
#include <iostream>
#include "interface.PushPopContainer.h"
 
template <class T>
class Queue : public PushPopContainer<T>{
private:
    T *arr; // указатель на очередь
    const int size; // Емкость очереди
    int begin, end; // начало, конец очереди
    int elemCT; //счетчик элементов
public:
    Queue(int = 10); //размер очереди = 10 элементам
    Queue(const Queue<T> &); // конструктор копирования
    ~Queue();
 
    inline void push(const T &); // добавить элемент в очередь
    inline T pop(); // удалить элемент из очереди
    inline void printQueue(); // вывод очереди
    inline const T &Peek(int) const; // n-й элемент от вершины очереди
    inline int Size() const;  // получить размер очереди
    inline bool isEmpty() const; // пуста ли очередь
    };
 
// конструктор по умолчанию
template <class T>
Queue<T>::Queue(int sizeQueue) : size(sizeQueue), // инициализация константы
begin(0), end(0), elemCT(0)
{
    // дополнительная позици поможет нам различать конец и начало очереди
    arr = new T[size + 1];
}
 
// конструктор копирования
template<class T>
Queue<T>::Queue(const Queue &otherQueue) :
size(otherQueue.size), begin(otherQueue.begin),
end(otherQueue.end), elemCT(otherQueue.elemCT),
arr(new T[size + 1])
{
    for (int ix = 0; ix < size; ix++)
        arr[ix] = otherQueue.arr[ix]; // копируем очередь
}
 
// деструктор класса Queue
template<typename T>
Queue<T>::~Queue(){ delete[] arr; }
 
// функция добавления элемента в очередь
template <class T>
inline void Queue<T>::push(const T &newElem){
    // проверяем, ести ли свободное место в очереди
    assert(elemCT < size);
 
    // обратите внимание на то, что очередь начинает заполняться с 0 индекса
    arr[end++] = newElem;
 
    elemCT++;
 
    // проверка кругового заполнения очереди
    if (end > size)
        end -= size + 1; // возвращаем end на начало очеред
}
 
// функция удаления элемента из очереди
template<typename T>
inline T Queue<T>::pop()
{
    // проверяем, есть ли в очереди элементы
    assert(elemCT > 0);
 
    T returnValue = arr[begin++];
    elemCT--;
 
    // проверка кругового заполнения очереди
    if (begin > size)
        begin -= size + 1; // возвращаем behin на начало очереди
 
    return returnValue;
}
 
// функция возвращает n-й элемент от вершины очереди
template <class T>
inline const T &Queue<T>::Peek(int nom) const{
    //
    assert(nom <= end);
    return arr[end - nom]; // вернуть n-й элемент стека
}
 
// вывод стека на экран
template <class T>
inline void Queue<T>::printQueue(){
    cout << "Queue: ";
    if (end == 0 && begin == 0)
        cout << " is Empty \n";
    else
    {
        for (int ix = end; ix >= begin; ix--)
            cout << arr[ix] << " ";
        cout << endl;
    }
}
 
// вернуть размер очереди
template <class T>
inline int Queue<T>::Size() const { return size; }
 
template <class T>
inline bool Queue<T>::isEmpty() const { return !size; }
 
#endif // QUEUE_H
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
#include <iostream>
 
using namespace std;
 
#include "queue.h" // подключаем шаблон класса
 
int main()
{
    Queue<char> myQueue(5); // объект класса очередь
 
    myQueue.printQueue(); // вывод очереди
 
    int ct = 1;
    char ch;
 
    // добавление элементов в очередь
    while (ct++ != 5)
    {
        cin >> ch;
        myQueue.push(ch);
    }
 
    myQueue.printQueue(); // вывод очереди
 
    // удаление элемента из очереди
    cout << "\nRemove two elements from the stack\n";
    myQueue.pop();
    myQueue.pop();
 
    myQueue.printQueue(); // вывод очереди
 
    cout << "\n\nLoad the copy constructor!\n";
    Queue<char> newQueue(myQueue);
 
    newQueue.printQueue(); // вывод очереди
 
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2017, 15:42
Ответы с готовыми решениями:

Как удалить последний элемент в однонаправленной очереди?
Как удалить последний элемент в однонаправленной очереди? первый - без проблем, но как удалить второй, чтобы на него месте не было нуля.

Всегда компилируется последний успешный, как это исправить?
Здравствуйте, может кто знает если компилировать код с ошибками, то выскакивает табличка, что то типо построить последний успешный код, и я...

Удалить последний элемент очереди
Нужно удалить последний элемент очереди. struct node { node *next; int info; }; void deleteLastElement(node*&amp;el,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2017, 15:42
Помогаю со студенческими работами здесь

Удалить последний элемент очереди
Необходимо использовать очередь следующим образом: записывать в нее, пока не заполнится. Если уже заполнена, перезаписать последний...

Удалить первый и последний элемент очереди
Нужна программа которая будет удалять первый и последний элемент очереди.

Составить процедуру, которая последний положительный элемент каждой строки матрицы заменяет суммой остальных ее элементо
Составить процедуру, которая последний положительный элемент каждой строки матрицы заменяет суммой остальных ее элементов. Если замена...

Выводится только последний элемент очереди, а нужно вывести все
Ничего понять не могу. Заполняю очередь, затем вывожу, а выводится лишь последний элемент. Например, если ввожу 1 2 3 4 5, то выводится...

проверка последний ли это элемент
привет всем, мне надо проверить последний ли это элемент li в ul и если да то выполнить условие, если нет то выполнить другое условие ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru