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

Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом

20.05.2013, 11:42. Показов 6219. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Здрасти

Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и умножения многочленов, представленных описанным образом (реализация 6).

Реализация 6. Разработайте класс, реализующий очередь с помощью указателей. Методы класса: добавление элемента в очередь, удаление элемента из очереди, получение значения из очереди, проверка заполнения очереди, проверка пустоты очереди.


вот написал саму реализацию своей программы.

Вопрос , как создать этот многочлен? Ну, эмм я не знаю как написать 2 очереди и функцию суммы


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
#include <iostream>
#include <process.h>
#include <conio.h>
#include <math.h>
 
 
using namespace std;
 
class Element
{
    public:
        float e, c;
        Element *Next;
        Element()
        {
            Next = NULL;
            c = 0;
            e = 0;
        }
};
class Queue
{
    public:
        Element *Head, *Tail;
        Queue()
        {
            Head = Tail = NULL;
        }
        ~Queue()
        {
            Element *Vsp;
            while(Head)
            {
                Vsp = Head;
                Head = Head->Next;
                delete Vsp;
            }
        }
 
    int EmptyQueue(void)
    {
        if(Head)
        {
            cout<<"\n\n\t\tEmpty it's full\n\n\n";
            return 0;
        }
        else
        {
            cout << "\n\n\t\t\tQueue is empty!!!"<< endl;
            return 1;
        }
    }
 
    void HeadQueue(void)
    {
        cout << endl << "\t\tHEAD QUEUE:"<<endl<<endl;
        if(!EmptyQueue())
            cout << "\n\nHead = "<<"C\t\tX\t\tE\n"<<"\t"<< Head->c << "\t\t" <<Head->e<<endl<<endl<<endl;
    }
    
    void ShowQueue(void)
    {
        Element *Vsp;
        cout << endl << "\t\tShow QUEUE:" << endl;
            if(!EmptyQueue())
            {
                while(Head)
                {
                    cout<<Head->c<<"*x^"<<Head->e<<"+";
                    Vsp = Head;
                    Head = Head -> Next;
                    delete Vsp;
                }
                Head = Tail = NULL;
            }
    }
    void AddQueue(void)
    {
        Element *Vsp = new Element;
        if(!Vsp) 
            exit(1);
 
        cout << endl << "\t\t\tADD QURUE:" << endl;
 
        if(!Head)
            Head = Vsp;
        else
            Tail -> Next = Vsp;
        Tail = Vsp;
    }
    void DeleteQueue(void)
    {
        Element *Vsp;
        cout<<"\n\n\t\t\Delete Queue:\n\n"<<endl;
        if(!EmptyQueue())
        {
            cout<<"\n\t\tDelete element:\n\n"<<endl;
            if(Head)
                Vsp = Head;
                Head = Head->Next;
                delete Vsp;
        }
    }
    void Menu(void)
    {
        int key = 0;
        do
        {
            cout << "\t\t\tMENU:" << endl << endl << "\t1 - ADD QUEUE" << endl 
            << "\t2 - Golova(Top) QUEUE" << endl << "\t3 - Empty Queue" << endl <<"\t4 - Rezult Mnogochlena "<<endl<<"\t5 - Delete Queue" <<endl
            << "\t6 - Summa"<< endl << "\tEsc - Exit" << endl << endl << "Press any key..." << endl;
            key = getch();
            switch(key)
            {
                case 49: AddQueue(); break;
                case 50: HeadQueue(); break;
                case 51: EmptyQueue(); break;
                case 52: ShowQueue(); break;
                case 53: DeleteQueue(); break;
                //case 54: Summa(); break;
            }
        }while(key!=27);
    }
};
 
int main()
{
    Queue Q;
    Q.Menu();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2013, 11:42
Ответы с готовыми решениями:

Напишите программу ввода, сложения и умножения двух матриц
Напишите программу ввода, сложения и умножения двух матриц

Подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10
1. Определить подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10. результаты...

Напишите процедуру сложения двух многочленов
5.17 Напишите процедуру сложения двух многочленов. Представьте каждый многочлен в виде массива коэффициентов, где Ai — коэффициент перед хi.

20
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:14
TankMr, ну у вас есть класс, создайте два объекта, заполните и перегрузите оператор умножения и сложения
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 12:32  [ТС]
Мы ещё не проходили операции перегрузки, так что это нельзя использовать
В классе создавать 2 объекта ?
Element Queue1, Queue2;
0
 Аватар для henecs
18 / 18 / 11
Регистрация: 19.05.2013
Сообщений: 135
20.05.2013, 12:41
а одного класса не хватает?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:44
TankMr, а куда нужно сохранять результат сложения и умножения? Создаешь Queue1, Queue2, заполняешь а потом можно тогда написать функцию которая берет по элементу из каждой очереди и складывает(умножает) их, и сохранять результат операции куда надо
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 12:53  [ТС]
Результат вывести на экран и все
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:59
ну тогда просто в функции сделать вывод, но тут нужно учесть одно но, очереди должны быть одинаковыми или нет?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:04  [ТС]
А это я даже не знаю, у меня есть такая же программа но с кольцевым массивом , и мне не понятно то там происходит, я вижу две очереди pol1 и pol2 , и что то там ещё происходит

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
#include <iostream>
#include <string.h>
#include <process.h>
#include <conio.h>
#define N 100
using namespace std;
struct Vspom
{
    int a;//для коэ-та Сi
    float e;//для показателя степени 
};
class Dat
{
    private: 
        Vspom s[N];
        int i,n;
    public:
        Dat()//конструктор
        {
            i=0;
            n=0;
        }
    void Add(Vspom);
    Vspom Del(void);//del
    int Pust(void);//pustoty
    int Poln(void);//polnoty
    Vspom Read(void);//неразруш. чтен
};
void Dat::Add(Vspom x)
{
    if(n<N)
    {
        s[i+n]=x;
        n++;
    }
    else cout<<"error!!"<<endl;
}
Vspom Dat::Del(void)
{
    if(n!=0)
    {
        i++; n--;
        return s[i-1];
    }
}
int Dat::Pust(void)
{
    return n==0;
}
int Dat::Poln(void)
{
    return n==N;
}
Vspom Dat::Read(void)
{
    return s[i];
}
int main()
{
    Dat pol1,pol2,sum;
    Vspom b,q;
    char k;
    do
    {
        //cout«"Menu:\n\n";
        cout<<"1-Enter Pol_1\n2-Enter Pol_2\n3-Rezult\n\n";
        k=getch();
        if(k=='1')
        {
            cout<<"Pop1:\n\n";
            cout<<"a=";
            cin>>b.a;
            cout<<"e=";
            cin>>b.e;
            pol1.Add(b);
        }
        if(k=='2')
        {
            cout<<"Pol2:\n\n";
            cout<<"a=";
            cin>>b.a;
            cout<<"e=";
            cin>>b.e;
            pol2.Add(b);
        }
    }
    while(k!='3');
    cout<<"\n\n";
    cout<<"Summa\n\n";
    while(!pol1.Pust()&&!pol2.Pust())
    {
        b=pol1.Read();
        q=pol2.Read();
        if(b.e==q.e)
        {
            b.a+=q.a;
            sum.Add(b);
            pol1.Del();
            pol2.Del();
        }
        else if(b.e>q.e)
        {
            sum.Add(b);
            pol1.Del();
        }
        else
        {
            sum.Add(q);
            pol2.Del();
        }
 
    }
    while(!pol1.Pust())
    {
        b=pol1.Del();
        sum.Add(b);
    }
    while(!pol2.Pust())
    {
        q=pol2.Del();
        sum.Add(q);
    }
    while(!sum.Pust())
    {
        b=sum.Del();
        cout<<b.a<<"*x^"<<b.e;
        if(!sum.Pust())
    {
    cout<<"+";
}
 
}
getch();
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 13:14
TankMr, я про размер имел в виду, нужно тогда создавать 2 очереди одинакового размера и применять к ним операции, это ваш код?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:16  [ТС]
Код моей программы в самом начале, а этот код такой же программы но с помощью циклического массива
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 13:20
так если вы смогли написать программу из первого поста, что вас останавливает написать функцию принимающую 2 аргумента типа Element , просматривающую их содержимое и складывающую элементы двух очередей?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:32  [ТС]
Цитата Сообщение от yoghurt92 Посмотреть сообщение
так если вы смогли написать программу из первого поста, что вас останавливает написать функцию принимающую 2 аргумента типа Element , просматривающую их содержимое и складывающую элементы двух очередей?
Я не могу понять в моем случае где создавать 2 очереди, в майне или в class Element ?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 16:52
TankMr, 2 очереди - два объекта типа Element, т.е. создали Queue op1, op2, вот вам и 2 очереди, потом уже заполняете их. И создавать их можно и в глобальной области и в функции Ну допустим вы объявили их в мейн, заполнили элементами и потом вызываете функцию для суммирования, вот ивсе

Добавлено через 2 часа 17 минут
TankMr, решил показать тебе, слегка тут накидал с комментами, самое главное там есть нужные 2 функции тебе, если что, спрашивай

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
#include <iostream>
 
struct QueueNode{               
    int ci;
    int ei;
    QueueNode *next;
 
    void input(){                           //для ввода полей структуры
        std::cout << "Enter ci: ";
            std::cin >> ci;
        std::cout << "Enter ei: ";
            std::cin >> ei;
        std::cout << std::endl;
    }
 
    void output(){                          //для вывода полей структуры
        std::cout << "Ci: " << ci;
        std::cout << "\tEi: " << ei << std::endl;
    }
};
 
class Queue{                    //наша очередь
    private:
        QueueNode *Head;        //голова очереди
 
    public:
        Queue():Head(nullptr) {}            //очередь изначальна пуста
 
        void addToQueue(){                      //функция добавления элемента в очередь
            QueueNode *value = new QueueNode;       //выделяем память
            value -> input();                       //инициализируем
 
            if(!Head){                  //если очередь пуста
                Head = value;               //голова - новый элемент
                value -> next = nullptr;        //следующего нет
            }
            else{                           //если очередь не пуста
                QueueNode *tmp(Head);       //промежуточный элемент
 
                while(tmp -> next != nullptr)       //идем до предпоследнего элемента
                    tmp = tmp -> next;
 
                tmp -> next = value;                    //предпоследний указывает на новый
                value -> next = nullptr;                //новый - последний
            }
        }
 
        void showQueue(){                   //функция вывода очереди
            QueueNode *tmp(Head);           //промежуточный элемент
 
            while(tmp != nullptr){          //идем до конца очереди
                tmp -> output();                //выводим содержимое
                tmp = tmp -> next;          //переходим к следующему
            }
        }
 
        bool isEmpty(){                     //проверку очереди на пустоту
            return Head == false;
        }
 
        void sumQueue(Queue op){            //функция сложения двух очередей
                                            //и выводом результата на экран
            QueueNode *tmp(this->Head),     //указатель на голову первой очереди
                      *tmp1(op.Head);       //указатель на голову второй очереди
 
            while(tmp != nullptr){          //размеры очереди должны быть одинаковы
 
                //выводи результат сложения соответствующих элементов на экран
                std::cout << "Ci: " << tmp->ci + tmp1->ci <<
                    "\tEi: " << tmp->ei + tmp1->ei << std::endl;
 
                //переходим к следующим элементам очереди
                tmp = tmp ->next;
                tmp1 = tmp1 ->next;
            }
        }
 
        //то же самое только для умножения
        void prodQueue(Queue op){
            QueueNode *tmp(this->Head),
                *tmp1(op.Head);
 
            while(tmp != nullptr){
                std::cout << "Ci: " << tmp->ci * tmp1->ci <<
                    "\tEi: " << tmp->ei * tmp1->ei << std::endl;
 
                tmp = tmp ->next;
                tmp1 = tmp1 ->next;
            }
        }
 
        void deleteQueue(){                             //функция освобождения памяти
            QueueNode *tmp(Head), *value(nullptr);      //указатель на голову и
                                                        //промежуточный указатель
 
            while(tmp != nullptr){                  //идем до конца очереди
                value = tmp ->next;                 //следующий элемент
                delete tmp;                         //удаляем текущий
                tmp = value;                        //текущий = следующий
            }
        }
};
 
int main()
{
    int size;       //размер очереди
    std::cout << "Enter the number of queue: ";
        std::cin >> size;
 
    Queue op1, op2;                     //создаем 2 очереди 
    for(int i = 0; i < size; ++i){          //заполняем
        op1.addToQueue();
        op2.addToQueue();
    }
 
    op1.sumQueue(op2);                  //складываем
    op1.prodQueue(op2);                 //умножаем
 
    op1.deleteQueue();
    op2.deleteQueue();
 
    std::cout << std::endl << std::endl;
    return 0;
}
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 21:17  [ТС]
Спасибо Вам за помощь, но не обязательно нужно было решать за меня, ну рас дело сделано, один вопрос, что такое nullptr и заменить его можно просто NULL

Добавлено через 1 час 30 минут
Цитата Сообщение от yoghurt92 Посмотреть сообщение
TankMr,
}[/CPP]
.Многочлены вида p(x)=c1*x^e1+c2*x^e2... и тд , где e1>e2>e3>...>en можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента ci, второе – для показателя степени ei, третье – для указателя на следующую ячейку. Напишите программу сложения и умножения многочленов

Мне не понятен Х, с ним что делать? Тоже с клавиатуры вводить?

Добавлено через 1 час 34 минуты
Я вот дописал программу но она ругается на autpute() и ShowQueue() не знаю почему

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
#include <iostream>
#include <conio.h>
#include <stdio.h>
 
using namespace std;
 
struct Element
{               
    int ci, ei, x;
    Element *Next;
 
    void input(void)
    {                          
        cout<<"Enter ci:\t";
        cin>>ci;
        cout<<"Enter x:\t";
        cin>>x;
        cout<<"Enter ei:\t";
        cin>>ei;
        cout<<endl;
        cout<<ci<<"*"<<x<<"^"<<ei<<endl<<endl;
    }
    void output(void)
    {                         
        cout<<ci<<"*"<<x<<"^"<<ei<<"+";
    }
};
 
class Queue
{                    
    private:
        Element *Head, *Tail;        
 
    public:
        Queue()                 
        {
            Head = NULL;
        }  
        ~Queue()
        {
            Element *Vsp;
            while(Head)
            {
                Vsp = Head;
                Head = Head->Next;
                delete Vsp;
            }
        }
        void AddQueue(void)
        {                     
            Element *Vsp = new Element;
            if(!Vsp) 
                exit(1);
 
            cout << endl << "\t\t\tADD QURUE:" << endl;
 
            Vsp -> input();                       
 
            if(!Head)                 
                Head = Vsp;                   
            else
                 Tail -> Next = Vsp;             
            Tail = Vsp;
        }
 
        void ShowQueue(void)
        {
            cout << endl << "\t\tShow QUEUE:" << endl;                  
            while(Tail)
            {          
                Tail -> output();               
                Tail = Tail -> Next;          
            } 
      
        }
 
        int EmptyQueue(void)
        {
            if(Head)
                return 0;
            cout << "\t\t\tQueue is empty!!!"<< endl;
            return 1;
        }
 
        void SummQueue(Queue p)
        {            
                                           
            Element *Tail(this->Head),     //указатель на голову первой очереди
                      *Tail1(p.Head);       //указатель на голову второй очереди
 
            while(Tail!=NULL)
            {          
                cout << Tail->ci + Tail1->ci <<"*"<< Tail->x + Tail1->x<<"^"
                    << Tail->ei + Tail1->ei <<"+";
 
                Tail = Tail ->Next;
                Tail1 = Tail1 ->Next;
            }
        }
 
        void ProizQueue(Queue p)
        {
             Element *Tail(this->Head),    
                      *Tail1(p.Head);
 
            while(Tail)
            {
                 cout << Tail->ci * Tail1->ci <<"*"<< Tail->x * Tail1->x<<"^"
                    << Tail->ei * Tail1->ei <<"+";
 
                Tail = Tail ->Next;
                Tail1 = Tail1 ->Next;
            }
        }
 
        void DeleteQueue(void)
        {    
            Element *Vsp;
            cout<<"\n\n\t\t\tDelete Queue:\n\n"<<endl;
                                                        
            if(!EmptyQueue())
            {
                cout<<"\n\t\tDelete element:\n\n"<<endl;
                if(Head)
                    Vsp = Head;
                Head = Head->Next;
                delete Vsp;
            }
        }
};
 
int main()
{
    int key = 0;
    cout<<"Please enter the key\n\n\n";
    Queue y1, y2;
    do
    {
        cout << "\n\n\nMENU:" << endl << endl << "\t1 - ADD QUEUE_1" <<endl<< "\t2 - ADD QUEUE_2" <<endl
        << "\t3 - Show QUEUE_1" << endl<< "\t4 - Show QUEUE_2" << endl << "\t5 - Delete QUEUE_1" << endl
        << "\t6 - Delete QUEUE_2" << endl<< "\t7 - Summa QUEUE" << endl<< "\t8 - Proizvedenie QUEUE" << endl
        << "\tEsc - Exit" << endl << endl << "Press any key..." << endl;
        key = getch();                     
        switch(key)
        {
            case 49: y1.AddQueue(); break;
            case 50: y2.AddQueue(); break;
            case 51: y1.ShowQueue(); break;
            case 52: y2.ShowQueue(); break;
            case 53: y1.DeleteQueue(); break;
            case 54: y2.DeleteQueue(); break;
            case 55: y1.SummQueue(y2); break;
            case 56: y1.ProizQueue(y2); break;
        }
    }while(key!=27);
    getch();
    return 0;
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 21:24
TankMr,
Цитата Сообщение от TankMr Посмотреть сообщение
Спасибо Вам за помощь, но не обязательно нужно было решать за меня, ну рас дело сделано, один вопрос, что такое nullptr и заменить его можно просто NULL
можно

Цитата Сообщение от TankMr Посмотреть сообщение
Мне не понятен Х, с ним что делать? Тоже с клавиатуры вводить?
а где вы его взяли? я не знаю для чего он Это же ваш код))

Цитата Сообщение от TankMr Посмотреть сообщение
Я вот дописал программу но она ругается на autpute() и ShowQueue() не знаю почему
конкретнее, как ругается?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 21:45  [ТС]
Ввожу коэффициенты многочлена, потом вызываю функцию суммы, и пишет мне

Unhandled exception at 0x00ce5049 in 1.exe: 0xC0000005: Access violation reading location 0xcdcdcdd1.
1.exe!main() Line 152 + 0x10 bytes C++
1.exe!__tmainCRTStartup() Line 582 + 0x19 bytes C
1.exe!mainCRTStartup() Line 399 C
kernel32.dll!75de8543()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!775abf39()


ntdll.dll!775abf0c()

Добавлено через 20 секунд
> 1.exe!Queue::SummQueue(Queue p={...}) Line 94 + 0x8 bytes C++
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 21:56
TankMr, а ты вводил всего по одному элементу в очередь?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 22:28  [ТС]
Вопрос не понятен, но я вводил сразу по 3 элемента, с е х, потом во вторую очередь с е х
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 22:39
TankMr, сейчас посмотрю

Добавлено через 11 минут
TankMr, у вас неправильно оформлена функция добавления нового элемента в очередь, NULL - признак конца очереди, вы при добавление не указываете его, что приводит к ошибки когда мы проходим по очереди...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void AddQueue(void)
    { 
        Element *Vsp = new Element;
        if(!Vsp) 
            exit(1);
 
        cout << endl << "\t\t\tADD QURUE:" << endl;
 
        Vsp -> input(); 
 
        if(!Head) {
            Head = Vsp; 
            Vsp ->Next = nullptr;
        }
        else
            Tail -> Next = Vsp; 
        Tail = Vsp;
        Vsp ->Next = nullptr;
    }
вставьте и все заработает и измените функцию сумму на следующий код, иначе при выводе последнего у вас будет стоять знак сложения

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void SummQueue(Queue p)
    { 
 
        Element *Tail(this->Head), //указатель на голову первой очереди
            *Tail1(p.Head); //указатель на голову второй очереди
 
            while(Tail != nullptr)
            { 
                if(Tail ->Next == nullptr){
                    cout << Tail->ci + Tail1->ci <<"*"<< Tail->x + Tail1->x<<"^"
                    << Tail->ei + Tail1->ei;
                }
                else{
                    cout << Tail->ci * Tail1->ci <<"*"<< Tail->x * Tail1->x<<"^"
                        << Tail->ei * Tail1->ei <<"+";
                }
 
                Tail = Tail ->Next;
                Tail1 = Tail1 ->Next;
            }
    }
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 23:04  [ТС]
Спасибо за ПОМОЩЬ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2013, 23:04
Помогаю со студенческими работами здесь

Составить программу для умножения многочленов
Составить программу для умножения многочленов.

Напишите свой класс, реализующий работу с комплексными числами. Операции сложения, вычитания, деления и умножения должны
Напишите свой класс, реализующий работу с комплексными числами. Операции сложения, вычитания, деления и умножения должны быть реализованы...

Напишите программу, реализующую работу очереди. Напишите функции для добавления/удаления элемента в очередь
Помогите пожалуйста написать программу. Готовый Queue не нужен( Нужно изобрести велосипед заново. Задание: Напишите программу,...

Составить программу для умножения и сложения матриц.
В программе предусмотреть вывод исходных матриц и матрицы - результата. | 5 3 -1 | | 1 4 16 | A= | 2 ...

Будет ли работать описанным образом следующая ссылка?
Требуется создать такую ссылку, что переход по адресу, указанному в атрибуте HREF, происходил не по одинарному клику (событие Click), а по...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru