0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 3
1

Добавить функцию удаления в класс "Очередь"

21.01.2017, 15:14. Показов 1107. Ответов 4
Метки нет (Все метки)

Подскажите как реализовать функцию удаления(popQueue)?
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
//queue.h 
#include <iostream>
#include <iomanip>
 
using namespace std;
 
class queue {
public:
 
    void printQueue(char* queue, int queueSize)
    {
        cout << "Очередь: " << endl;
        for (int i = 0; i < queueSize; i++)
        {
            cout << "|" << setw(4) << queue[i] << setw(4) << "|" << endl;
        }
        cout << endl;
    }
    void pushQueue(char* queue, int queueSize)
    {
        char  symbol;
        cout << "Введите символ: ";
        cin >> symbol;
        queue[queueSize] = symbol;
    }
    void popQueue(char* queue, int queueSize)
    {
        queue[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
//main.cpp
 
#include "queue.h"
#include "windows.h"
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    system("chcp 1251");
    system("cls");
    //----------------------------------
    queue Qu;            //объект класса queue
    char* queue = new char[5]; //Переменная, которая хранит элементы очереди 
    int queueSize;       //Кол-во элементов в очереди
    char action = 0;         //Действие меню
                             //----------------------------------
 
    cout << "Введите данные для очереди: ";
    cin >> queue;
    queueSize = strlen(queue);    // длина слова
 
    cout << "Выберети действие, которое хотите выполнить: " << endl
        << "1 - Добавить символ в очередь" << endl
        << "2 - Удалить верхний символ из очереди" << endl
        << "3 - Вывести количество символов в очереди" << endl
        << "4 - Вывести очередь на экран" << endl
        << "5 - Выход из программы" << endl;
    while (action != 5)
    {
        cout << "Введите действие: ";
        cin >> action;
 
        switch (action)
        {
        case '1':
        {
            Qu.pushQueue(queue, queueSize);
            queueSize++;
            cout << "Элемент успешно добавлен!" << endl;
            break;
        }
        case '2':
        {
            Qu.popQueue(queue, queueSize);
            
            cout << "Элемент успешно удалён!" << endl;
            break;
        }
        case '3':
        {
            cout << "Элементов в очереди: " << queueSize << endl;
            break;
        }
        case '4':
        {
            Qu.printQueue(queue, queueSize);
            break;
        }
 
        case '5':
        {
            cout << "Завершение программы..." << endl;
            system("pause");
            return 0;
        }
        default:
        {
            cout << "Вы ввели некоректные данные" << endl;
        }
        }
    }
 
    system("pause");
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2017, 15:14
Ответы с готовыми решениями:

Класс "Телефонная книга". Дописать методы, "поиск" и "удаления" абонента
Вот код класса, который должен предоставьте пользователю возможность добавлять новых абонентов,...

Иерархия классов "список"-"очередь", вызов метода через класс интерфейс
Есть небольшая иерархия классов, контейнер (список) для хранения объектов каждого класса, контейнер...

Добавить целое число в очередь с помощью "operator <<"
В общем, прочитал я статьи про очереди. Где делается с помощью конструктора,деструктора,массивов....

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс...

4
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
21.01.2017, 16:00 2
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
21.01.2017, 16:49 3
Добавлено через 6 минут
класс queue не содержит никаких данных, зачем создавать его екземпляр? Нужно сделать его методы статическими

Добавлено через 1 минуту
Цитата Сообщение от Дофами Посмотреть сообщение
char* queue = new char[5];
Один раз выделяется память, потом при добавлении символов нигде не проверяется переполнение буфера и необходимость перевыделения памяти под буфер большего размера
0
0 / 0 / 0
Регистрация: 21.01.2017
Сообщений: 3
21.01.2017, 16:50  [ТС] 4
компилируется
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
21.01.2017, 16:57 5
Лучший ответ Сообщение было отмечено Дофами как решение

Решение

Цитата Сообщение от Дофами Посмотреть сообщение
void pushQueue(char* queue, int queueSize)
* * {
* * * * char *symbol;
* * * * cout << "Введите символ: ";
* * * * cin >> symbol;
* * * * queue[queueSize] = symbol;
* * }
Как-то неправильно в методе этого класса, что-то выводить на экран и спрашивать что мы хотим добавить. Лучше все это сделать в мэйне а методу передать все в параметрах, что-бы он сам молча все сделал

Добавлено через 3 минуты
Если в лоб:
C++
1
2
3
4
5
    void popQueue(char* queue, int queueSize)
    {
        cout << "Хоть мне и не нравится архитектура данной тулзы, но далили мы значит символ: " << queue[0];
        memmove(queue, queue+1, queueSize-1);
    }
Добавлено через 1 минуту
только потом по аналогии, после вызова:
C++
1
queueSize--;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2017, 16:57
Помогаю со студенческими работами здесь

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об...

Запись данных класса в шаблонный класс "Очередь"
Всем доброго дня. Мне нужно написать шаблонный класс &quot;Очередь&quot; на структуре связного списка,...

класс Lqueue, структура типа "очередь"
Создать класс Lqueue - структура типа &quot;очередь&quot;, что базируется на структуре связного списка. Тип...

Базовый класс "Изделие" и производные классы "Мышь", "Клавиатура", "Монитор"
/*Создать класс изделие, с полями себестоимость, цена, время выполнения, стоимость нормочаса и...

Описать класс "двухсторонняя очередь"
Элементы в очереди - одномерные динамические массивы. Если честно, совершенно не понимаю, как это...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru