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

Очередь

24.03.2022, 21:10. Показов 709. Ответов 4

Помогите с кодом. Не могу понять как с дифференцированием работать и его вписать

Очередь. Многочлены вида ne
p(x) = c1x^e1+c2x^e2+...+cnx^en , где e1>e2>…>en≥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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
typedef struct QueueNode DataType;             
 
struct QueueNode *next;                            
 
    void input(int count){                          
        int ci,ei;                                    
                                                     
        printf("Enter c: ");
            scanf("%d",&ci);
        printf("Enter e: ");
            scanf("%d",&ei);
    }
 
void output(){                                
        printf ("cix^ei");
    }
 
void QueueNode *addToQueue (QueueNode*ptr, int &count){          
    QueueNode *tmp == ptr,*cur == new QueueNode;                
    cur->input(count++);                                  
    cur->next = nullptr;                                  
 
    if(ptr == nullptr){                                    
        ptr = cur;                                          
    }
    else{                                                   
        while(tmp -> next != nullptr){
            tmp = tmp -> next;
        }
 
        tmp -> next = cur;                                  
    }
 
    return ptr;                                             
}
 
void showQueue(QueueNode *ptr){                             
    QueueNode *tmp = ptr;
 
    if(ptr == nullptr){
        printf("Queue is empty!\n");                  
    }
    else{
        printf("P = ");
        while(tmp != nullptr){                             
            tmp -> output();                                    
 
            if(tmp -> next != nullptr) printf() << " + ";      
            tmp = tmp -> next;                                  
        }
        printf(';');
    }
}
 
void delQueue(QueueNode *ptr){                             
    QueueNode *tmp = ptr, *cur(nullptr);
 
    if(ptr == nullptr){
        printf("Queue is empty!\n");                  
    }
    else{
        while(tmp != nullptr){
            cur = tmp -> next;                     
            delete tmp;                                
            tmp = cur;                                 
        }
    }
}
 
int _tmain(int argc, _tchar* argv[])
{
    int count(1);                           
    QueueNode *Head(nullptr);               
 
    for(int i = 0; i < 3; ++i)              
        Head = addToQueue(Head, count);
 
    showQueue(Head);                        
    delQueue(Head);                         
 
    printf("\n\n");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2022, 21:10
Ответы с готовыми решениями:

Сформировать односвязную очередь из элементов, которые входят в очередь Q1, но не входят в очередь Q2
Составить программу обработки динамической структуры данных: сформировать односвязную очередь Q из...

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

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

Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее арифметическое элементов
Дана очередь с вещественными числами, упорядоченными по убыванию. Добавить в очередь среднее...

4
3966 / 2020 / 726
Регистрация: 29.11.2010
Сообщений: 4,333
25.03.2022, 01:56 2
Цитата Сообщение от T34m Посмотреть сообщение
как с дифференцированием
Что вы тут подразумеваете под "дифференцированием"?
Вы хотите взять производную произвольного многочлена?

Цитата Сообщение от T34m Посмотреть сообщение
Очередь. Многочлены
При чём тут очередь, объясните, пожалуйста.
Очередь это структура LIFO, типа кладешь туда элементы, забираешь их оттуда в том же порядке в каком положил.
При чем тут многочлен? Многочлен хранится как очередь? Как этот факт поможет?!
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
32338 / 17921 / 3752
Регистрация: 12.02.2012
Сообщений: 30,091
Записей в блоге: 5
25.03.2022, 05:16 3
Цитата Сообщение от lemegeton Посмотреть сообщение
Очередь это структура LIFO,
- все-таки FIFO
1
0 / 0 / 0
Регистрация: 24.03.2022
Сообщений: 3
25.03.2022, 11:51  [ТС] 4
Да, я имею ввиду взять производную от произвольного многочлена. И в дальнейшем чтоб программа решила этот многочлен.
А очередь это тип данных с которым надо работать в данной ситуации. Данный факт ни как не поможет, просто такое задание)
0
3966 / 2020 / 726
Регистрация: 29.11.2010
Сообщений: 4,333
25.03.2022, 22:41 5
Лучший ответ Сообщение было отмечено T34m как решение

Решение

Если что, я отказываюсь писать контейнеры без итераторов.
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include <iostream>
 
struct QueueNodeBase {
    QueueNodeBase *prev;
    QueueNodeBase *next;
 
    QueueNodeBase() : next(this), prev(this) {}
 
    QueueNodeBase(QueueNodeBase *prev, QueueNodeBase *next) : next(next), prev(prev) {
        next->prev = prev->next = this;
    }
 
    ~QueueNodeBase() {
        next->prev = prev;
        prev->next = next;
    }
};
 
template<typename T>
struct QueueNode : public QueueNodeBase {
    T value;
 
    QueueNode(QueueNodeBase *prev, QueueNodeBase *next, const T &value) : QueueNodeBase(prev, next), value(value) {}
};
 
template<typename T, typename QueueNodeBasePointer, typename QueueNodePointer>
struct QueueIterator {
    using iterator_category = std::bidirectional_iterator_tag;
    using difference_type = std::ptrdiff_t;
    using value_type = T;
    using pointer = value_type *;
    using reference = value_type &;
    using self = QueueIterator<T, QueueNodeBasePointer, QueueNodePointer>;
 
    QueueIterator(QueueNodeBasePointer node) : node(node) {}
 
    reference operator*() { return static_cast<QueueNodePointer>(node)->value; }
 
    reference operator*() const { return static_cast<QueueNodePointer>(node)->value; }
 
    pointer operator->() { return &static_cast<QueueNodePointer>(node)->value; }
 
    pointer operator->() const { return &static_cast<QueueNodePointer>(node)->value; }
 
    self &operator++() {
        node = node->next;
        return *this;
    }
 
    self operator++(int) {
        self result = *this;
        ++(*this);
        return result;
    }
 
    self &operator--() {
        node = node->prev;
        return *this;
    }
 
    self operator--(int) {
        self result = *this;
        --(*this);
        return result;
    }
 
    friend bool operator==(const self &a, const self &b) {
        return a.node == b.node;
    };
 
    friend bool operator!=(const self &a, const self &b) {
        return a.node != b.node;
    };
 
    QueueNodeBasePointer node;
};
 
template<typename T>
class Queue {
public:
    using Iterator = QueueIterator<T, QueueNodeBase *, QueueNode<T> *>;
    using ConstIterator = QueueIterator<const T, const QueueNodeBase *, const QueueNode<T> *>;
    using Node = QueueNode<T>;
 
    Queue() : base() {}
 
    Queue(const std::initializer_list<T> &list) : base() {
        for (auto &i : list) {
            pushBack(i);
        }
    }
 
    Queue(const Queue<T> &other) : base() {
        for (auto &i : other) {
            pushBack(i);
        }
    }
 
    Queue<T> &operator=(const Queue<T> &other) {
        if (this != &other) {
            clear();
            for (auto &i : other) {
                pushBack(i);
            }
        }
        return &this;
    }
 
    ~Queue() {
        clear();
    }
 
    void pushBack(const T &value) {
        new Node(base.prev, &base, value);
    }
 
    T popFront() {
        T result = *begin();
        delete base.next;
        return result;
    }
 
    Iterator begin() {
        return base.next;
    }
 
    Iterator end() {
        return &base;
    }
 
    ConstIterator begin() const {
        return base.next;
    }
 
    ConstIterator end() const {
        return &base;
    }
 
    ConstIterator cbegin() const {
        return base.next;
    }
 
    ConstIterator cend() const {
        return &base;
    }
 
    bool isEmpty() const {
        return base.next == &base;
    }
 
    void clear() {
        while (!isEmpty()) {
            delete base.next;
        }
    }
 
private:
    QueueNodeBase base;
};
 
template<typename T>
std::ostream &operator<<(std::ostream &out, const Queue<T> &q) {
    for (auto i = q.cbegin(), end = q.cend(); i != end;) {
        std::cout << *i++;
        if (i != end) {
            std::cout << ", ";
        }
    }
    return out;
}
 
// допустим, очередь содержит коэфициенты полинома от младшей степени к старшей
template<typename T>
Queue<T> differentiate(const Queue<T> &polynomial) {
    if (polynomial.isEmpty()) {
        return Queue<T>();
    }
    Queue<T> result;
    std::size_t c = 0;
    for (auto i = ++polynomial.begin(), end = polynomial.end(); i != end;) {
        result.pushBack((++c) * (*i++));
    }
    return result;
}
 
 
int main() {
    Queue<double> coefficients{1, 3, 3, 1};
 
    std::cout << coefficients << std::endl << differentiate(coefficients) << std::endl;
 
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2022, 22:41
Помогаю со студенческими работами здесь

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

Создать очередь, информационными полями которой являются: наименование товара и его стоимость. Добавить в очередь сведе
Создать очередь, информационными полями которой являются: наименование товара и его стоимость....

Очередь, теория. Очередь на шести стеках
Здравствуйте, пытаюсь побольше найти информации про очереди и их применение в программировании. Из...

Работа с очередью. Умейте поставить в очередь элемент, удалить элемент из очереди, пересмотреть очередь
То чувство , когда изучали web и тут нам дают задачу по с++ ... Нужна помощь !!

Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди
Нужно создать очередь. Добавить элемент в очередь. Удалить элемент из очереди. Вот моё...

Очередь С++
Дан текстовый файл Вводятся с клавы числа А и В Надо вывести НА ЭКРАН СНАЧАЛА ВСЕ ЧИСЛА меньше А...


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

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

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