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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Elizoveta
Сообщений: n/a
#1

Программирование списков - C++

02.12.2013, 21:40. Просмотров 235. Ответов 1
Метки нет (Все метки)

Здравствуйте) Я Елизовета,подскажите мне дали вот такую задачу,но увы есть проблема,можете подсказать с чего просто начать,а то я такое еще не до конца поняла,за ранее спасибо за помощь
Миниатюры
Программирование списков  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программирование списков (C++):

Программирование динамических списков - C++
Написать программу, в которой реализовать создания динамического списка с последующим функционалом: а) добавление элементов в список; ...

Программирование линейных списков на языке СИ - C++
Представить таблицу в виде линейного списка L, элементами которой являются строки таблицы. Таблица 1 – Список студентов № Фамилия...

Выбор кафедры в дальнейшей жизни: прикладное программирование VS системное программирование - C++
Сразу извиняюсь что очень не по теме но всё же лучшего форума для этого вопроса я не нашел. Итак я вступаю во взрослую жизнь и давно...

Объединение списков - C++
Все работает, но каждый элемент 3-го списка идет через пробел, можно ли убрать эти пробелы? #include <iostream> using namespace std; ...

Конкатенация списков - C++
Как реализовать метод объединения двух списков. Объединение двух списков. В результате должен получиться третий список.

слияние списков - C++
помогите с написание программы!!! нужно написать программу которая объединяет два упорядоченных списка в один. Функция merge должна...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
D3fend0r
17 / 17 / 1
Регистрация: 14.09.2013
Сообщений: 37
03.12.2013, 04:43 #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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <iostream>
#include<vector>
#include <utility>
#include <algorithm>
#include <cmath>
using namespace std;
 
 
bool pairCompare(const pair<int, int>&, const pair<int, int>&); //Comparator between two pairs
 
class Polynom
{
    class Member
    {
        friend class Polynom;
        int coefficient;
        int pow;
        Member *next;
 
        Member(int, int, Member*);
        ~Member();
    };
 
    Member *first;
 
 
 
public:
    Polynom(vector<pair<int,int>>&);
    ~Polynom();
    double Calculate(double);
    void Modify(pair<int,int>);//pair.first=coefficient; pair.second=power
    void Print();
};
 
 
 
Polynom::Member::Member(int coefficient, int pow, Member *next)
{
    this->pow = pow;
    this->coefficient = coefficient;
    this->next = next;
}
 
Polynom::Member::~Member()
{
    delete next;
}
 
Polynom::Polynom(vector<pair<int, int>> &members)
{
    sort(members.begin(), members.end(), pairCompare);//sorts from the biggest power to the smallest
    if (members.size())
    {
        first = new Member(members[0].first, members[0].second, nullptr);
        Member *tmp = first;
        for (int i = 1; i < members.size(); i++)
        {
            tmp->next = new Member(members[i].first, members[i].second, nullptr);
            tmp = tmp->next;
        }
    }
    else first = nullptr;
}
 
Polynom::~Polynom()
{
    delete first;
}
 
double Polynom::Calculate(double x)
{
    double result=0;
    Member *tmp = first;
    while (tmp)
    {
        result += (tmp->coefficient*pow(x, tmp->pow));
        tmp = tmp->next;
    }
    return result;
}
 
void Polynom::Modify(pair<int, int> p)
{
    Member* tmp = first;
    while (tmp)
    {
        if (tmp->pow == p.second)
        {
            tmp->coefficient = p.first;
            break;
        }
        tmp = tmp->next;
    }
}
 
void Polynom::Print()
{
    if (!first) cout << 0;
    else
    {
        cout << first->coefficient << "x^" << first->pow;
        Member* tmp = first->next;
        while (tmp)
        {
            if (tmp->coefficient > 0) cout << " + " << tmp->coefficient << "x^" << tmp->pow;
            else cout << " - " << (0-tmp->coefficient) << "x^" << tmp->pow;
            tmp = tmp->next;
        }
    }
    
}
 
bool pairCompare(const pair<int, int>& firstElem, const pair<int, int>& secondElem) 
{
    return firstElem.second > secondElem.second;
}
 
 
 
int main()
{
    pair<int, int> x1(4, 3);
    pair<int, int> x2(-1, 5);
    pair<int, int> x3(11, 6);
    pair<int, int> x4(-5, 1);
    pair<int, int> x5(1, 11);
    pair<int, int> x6(33, 2);
 
    vector<pair<int, int>> p1;
    p1.push_back(x1);
    p1.push_back(x2);
    p1.push_back(x3);
    p1.push_back(x4);
    p1.push_back(x5);
    p1.push_back(x6);
 
    Polynom poly(p1);
    poly.Print();
    double a = 1, b = 0.2, c = 2;
    cout << endl << "poly(" << a << ") = " << poly.Calculate(a) << endl
        << "poly(" << b << ") = " << poly.Calculate(b) << endl 
        << "poly(" << c << ") = " << poly.Calculate(c) << endl;
    poly.Modify(pair<int, int>(21, 5));
    poly.Print();
    cout << endl;
    system("pause");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 04:43
Привет! Вот еще темы с ответами:

Список списков) - C++
задача: В некотором институте приобретаемые компьютеры выделяются различным факультетам поочередно. В пределах ...

Рекурсия списков - C++
Помогите пожалуйста!:(Вообщем вводится лин.список из целых чисел(конец ввода -1) 1.Рекурсивно перевернуть список 2.Найти сумму кубов...

Сортировка списков - C++
Как можно из двух списков, допустим с фамилиями, вывести на экран так, чтобы первые были фамилии, начинающиеся на букву А?

Сравнение списков - C++
Доброго времени суток . Нужен небольшой совет по программе . Есть 2 списка (стандартный STL-кий класс list ) , нужно сравнить их на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru