Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
TankMr
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
20.05.2013, 11:42     Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом #1
Всем Здрасти

Многочлены вида , где можно представить в виде очереди, где каждый элемент имеет три поля: одно – для коэффициента 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 11:42     Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом
Посмотрите здесь:

C++ Перегрузка операторов сложения и умножения
Напишите программу, которая соединит три строки в одну таким образом, что... C++
Составить программу,которая печатает таблицу умножения и сложения натуральных чисел в десятичной системе счисления на пять C++
Цикл: Напишите программу, которая выводит на экран квадрат Пифагора – таблицу умножения. C++
C++ Составить программу,которая печатает таблицу умножения и сложения натуральных чисел в шестнадцатеричной системе счисления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 19:46     Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом
Еще ссылки по теме:

Напишите программу, заполняющую массив N×N следующим образом C++
Последовательность многочленов T0(x),T1(x),. определяется следующим образом C++
Определить подпрограммы сложения и умножения C++

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

Или воспользуйтесь поиском по форуму:
TankMr
1 / 1 / 0
Регистрация: 13.05.2013
Сообщений: 30
22.05.2013, 19:46  [ТС]     Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом #21
Привет

Вообщем сделал программу, но оказывается не то нужно было.

Там просто нужно вывести их на экран, в порядке убывания.

Например: 1*x^6+4*x^4+2*x^3 и тд

Вот точно же такую нужно написать, но я не знаю в чем отличие циклического массива от односвязного списка

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
#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();
}
Это циклический массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
22.05.2013, 19:46     Очередь: Напишите программу сложения и умножения многочленов, представленных описанным образом
Ответ Создать тему
Опции темы

Текущее время: 13:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru