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

Нужны пояснения к коду - C++

Восстановить пароль Регистрация
 
ivan_mai
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 17
15.06.2016, 12:38     Нужны пояснения к коду #1
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
#include <stdio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
struct simple
{
    unsigned int n;
    int a;
    simple *nextsimple;
};
 
void add(simple *a, simple *b, simple *sum)
{
    simple *tempa, *tempb, *tempsum;
    tempa = a;
    tempb = b;
    tempsum = sum;
    do 
    {
        int slag=0;
        slag+=tempa->a;
        tempb = b;
        do 
        {
            if (tempa->n==tempb->n)
                slag+=tempb->a;
            tempb=tempb->nextsimple;
        } while (tempb!=NULL);
        //tempa=tempa->nextsimple;
        if (slag!=0) {
        if (tempsum->nextsimple==NULL)
        {
            tempsum->nextsimple=new simple;
            tempsum = tempsum->nextsimple;
        }
        
        tempsum->a=slag;
        tempsum->n=tempa->n;
        tempsum->nextsimple=NULL;
        }
        tempa=tempa->nextsimple;
    } while (tempa!=NULL);
    tempa = a;
    tempb = b;
    do {
        bool finded = false;
        tempa = a;
        do {
            if (tempb->n==tempa->n) finded = true;
            tempa=tempa->nextsimple;
        } while(tempa!=NULL);
        if (!finded)
        {
            tempsum->nextsimple = new simple;
            tempsum=tempsum->nextsimple;
            tempsum->a=tempb->a;
            tempsum->n=tempb->n;
            tempsum->nextsimple=NULL;
        }
        tempb=tempb->nextsimple;
    } while(tempb!=NULL);
}
 
bool equals(simple *a, simple *b) {
    bool yep = true;
    int i=0,j=0;
    simple *tempa, *tempb;
    tempa = a;
    tempb = b;
    do {
        ++i;
        tempa=tempa->nextsimple;
    } while(tempa!=NULL);
    do {
        ++j;
        tempb=tempb->nextsimple;
    } while(tempb!=NULL);
    if(i!=j) yep = false;
    tempa = a;
    do {
    tempb = b;
    bool finded = false;
    do {
        if(tempb->n==tempa->n) {
            finded = true;
            if(tempa->a!=tempb->a) yep=false;
        }
        tempb=tempb->nextsimple;
    } while(tempb!=NULL);
    if(!finded) yep=false;
    tempa=tempa->nextsimple;
    } while(tempa!=NULL);
    
    return yep;
}
 
void putsimple(simple *in)
{
    int count;
 
    simple *temp=in;   
    cout<<"size - ";
    cin>>count;
    for (int i = 0;i<count;i++)
    {
        if (i!=0) 
        {
            temp->nextsimple = new simple;
            temp=temp->nextsimple;
        }
        cout<<endl<<"Put a n - ";
        cin>>temp->a>>temp->n;
        temp->nextsimple=NULL;
        
    }
    
    
    
}
 
int meaning(simple *a, int x) {
    simple *tempa;
    tempa = a;
    int answer=0;
    do {
        answer+=pow(x,tempa->n)*tempa->a;
        tempa=tempa->nextsimple;
    } while(tempa!=NULL);
    return answer;
}
 
void printsimple(simple *in)
{
    simple *temp=in;
    cout<<endl;
    do
    {
        if (temp->a>0) cout<<"+"<<temp->a<<"x^"<<temp->n;
        else
        cout<<temp->a<<"x^"<<temp->n;
        temp=temp->nextsimple;
    } while (temp != NULL);
    cout<<endl;
}
 
int main(int argc, char **argv)
{
    simple *P = new simple;
    simple *Q = new simple;
    simple *sum = new simple;
    int x;
    cout<<"Enter P:"<<endl;
    putsimple(P);
    cout<<"Enter Q:"<<endl;
    putsimple(Q);
    cout<<"Enter x - ";
    cin>>x;
    printsimple(P);
    printsimple(Q);
    if (equals(P,Q)) cout<<"P equals Q"<<endl; else cout<<"P NOT equals Q"<<endl;
    cout<<"P+Q:"<<endl;
    add(P,Q,sum);
    printsimple(sum);
    cout<<"P in x = "<<meaning(P,x)<<endl;
    cout<<"Q in x = "<<meaning(Q,x)<<endl;
    cout<<"Done!!!";
    scanf("%d");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2016, 12:38     Нужны пояснения к коду
Посмотрите здесь:

Необходимы пояснения по коду C++
Пишем рогалик: пояснения по коду и его критика C++
C++ Нужны некоторые пояснения
C++ Нужны пояснения
Реализация связанного списка - нужны пояснения C++
C++ Нужны пояснения насчет компиляторов для разных ОС
Нужны пояснения по вложенным классам C++
Нужны небольшие пояснения по маленькому фрагменту кода, реализующего рекурсивный поиск в глубину по графу C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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