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

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

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

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

Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2013, 11:42
Ответы с готовыми решениями:

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

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

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

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

20
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:14 2
TankMr, ну у вас есть класс, создайте два объекта, заполните и перегрузите оператор умножения и сложения
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 12:32  [ТС] 3
Мы ещё не проходили операции перегрузки, так что это нельзя использовать
В классе создавать 2 объекта ?
Element Queue1, Queue2;
0
18 / 18 / 11
Регистрация: 19.05.2013
Сообщений: 135
20.05.2013, 12:41 4
а одного класса не хватает?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:44 5
TankMr, а куда нужно сохранять результат сложения и умножения? Создаешь Queue1, Queue2, заполняешь а потом можно тогда написать функцию которая берет по элементу из каждой очереди и складывает(умножает) их, и сохранять результат операции куда надо
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 12:53  [ТС] 6
Результат вывести на экран и все
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 12:59 7
ну тогда просто в функции сделать вывод, но тут нужно учесть одно но, очереди должны быть одинаковыми или нет?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:04  [ТС] 8
А это я даже не знаю, у меня есть такая же программа но с кольцевым массивом , и мне не понятно то там происходит, я вижу две очереди 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 9
TankMr, я про размер имел в виду, нужно тогда создавать 2 очереди одинакового размера и применять к ним операции, это ваш код?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:16  [ТС] 10
Код моей программы в самом начале, а этот код такой же программы но с помощью циклического массива
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 13:20 11
так если вы смогли написать программу из первого поста, что вас останавливает написать функцию принимающую 2 аргумента типа Element , просматривающую их содержимое и складывающую элементы двух очередей?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 13:32  [ТС] 12
Цитата Сообщение от yoghurt92 Посмотреть сообщение
так если вы смогли написать программу из первого поста, что вас останавливает написать функцию принимающую 2 аргумента типа Element , просматривающую их содержимое и складывающую элементы двух очередей?
Я не могу понять в моем случае где создавать 2 очереди, в майне или в class Element ?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 16:52 13
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  [ТС] 14
Спасибо Вам за помощь, но не обязательно нужно было решать за меня, ну рас дело сделано, один вопрос, что такое 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 15
TankMr,
Цитата Сообщение от TankMr Посмотреть сообщение
Спасибо Вам за помощь, но не обязательно нужно было решать за меня, ну рас дело сделано, один вопрос, что такое nullptr и заменить его можно просто NULL
можно

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

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

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 17
TankMr, а ты вводил всего по одному элементу в очередь?
1
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 22:28  [ТС] 18
Вопрос не понятен, но я вводил сразу по 3 элемента, с е х, потом во вторую очередь с е х
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
20.05.2013, 22:39 19
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  [ТС] 20
Спасибо за ПОМОЩЬ
0
20.05.2013, 23:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2013, 23:04
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru