,   CyberForum.ru

set - C++

 
diabolik
0 / 0 / 0
: 27.06.2012
: 7
28.06.2012, 15:00     set #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
#include <iostream>
 
using namespace std;
 
template <class Data> class Set{ 
         class Node{ 
               public:
                      Data d;
                      Node *next, *prev;
                      Node(Data dat = 0){d = dat; next = 0; prev = 0;}
               };
               Node *pbeg, *pend; 
               public:
               Set(){pbeg = 0; pend = 0;}
               ~Set();
               void add(Data d);
               Node * find(Data i);
               Node * insert(Data key, Data d);
               bool remove(Data key); 
               void print(); 
               void print_back();
               };
//---------------------------------------------
template <class Data> 
              Set <Data>:: ~Set(){ 
                
              if (pbeg !=0){
              Node *pv = pbeg; 
              while (pv){
              pv = pv->next; delete pbeg;
              pbeg = pv;}
                            }
              }
            
//.....................
 
template <class Data>
         void Set <Data>::print(){
         Node *pv = pbeg;
         cout<<endl<<"Set: ";
         while (pv){
         cout<<pv->d<<" "; 
         pv = pv->next;} 
         cout<<endl;
 
}
 
//.........................
 
 
 
template <class Data>
         void Set <Data>::add(Data d){
         Node *pv = new Node(d);
         if (pbeg == 0)pbeg = pend = pv;
         else{
         pv->prev = pend; 
         pend->next = pv; 
         pend = pv;}
 
}
 
template <class Data>
         Node * Set <Data>::find(Data d){   /*64 D:\Áåçûìÿ**ûé1.cpp expected constructor, destructor, or type conversion before '*' token 
         64 D:\Áåçûìÿ**ûé1.cpp expected `;' before '*' token */
         Node *pv = pbeg; while (pv){
         if(pv->d == d)break: pv = pv->next;
                                            }
         return pv;
         }
 
 
 
 
 
 
template <class Data>
         bool Set <Data>::remove(Data key){
         if(Node *pkey = find(key))
         { if (pkey == pbeg){
         pbeg = pbeg->next; pbeg->prev = 0;} 
         else if (pkey = pend){
              pend = pend->prev; pend->next = 0;} 
         else {
              (pkey->prev)->next = pkey->next;
              (pkey->next)->prev = pkey->prev;} 
         delete pkey; return true;} 
         return false;
 
}
 
int main()
{
Set<int> b;
b.add(1);
b.add(1);
b.add(1);
b.add(1);
b.remove(3);
b.print();
getchar();
getchar();
}
, .

31
64 ..

2
, ....
...

7 2
up
...


8 46
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
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
template <class type> class Tset
{private:
         type *contents; 
         int size;
         int sizetek;
         int SetEl(int ind, type m)
             {if(ind<size) {contents[ind]=m; sizetek+=1; return 1;}
             else {cout<<"ð*çìåð ì*îæåñòâ* ïðèâûøå*"<<endl; return 0;}
             }
         type GetEl(int ind)
         {return contents[ind];}
public:
       Tset(){cout<<"êî*ñòðóêòîð ïî óìîë÷**èþ"<<endl; contents=NULL;}
       Tset(Tset &A);
       Tset(int number)
                {cout<<"êî*ñòðóêòîð"<<endl;
                contents=new type[size=number]; sizetek=0;}
       ~Tset()
              {cout<<"äåñòðóêòîð"<<endl; delete[] contents;}
       int Getsize()
           {return size;}
       void Add(type m);
       void Del(type m);
       int In(type m);
       int InSet(int Nn);
       void OutSet();
       Tset& CrossSet(Tset &B);
       Tset &operator +(Tset &B);
       Tset &operator =(Tset &B);
       
       friend Tset &operator *(Tset &A, Tset &B);  //
       friend Tset &operator -(Tset &A, Tset &B);
       
};
 
 
 
 
template<class type> Tset<type>::Tset(Tset<type>&A)             
               {cout<<"êîïèðóþùèé êî*ñòðóêòîð"<<endl;
               contents=new type [size=A.Getsize()];
               sizetek=A.sizetek;
               for(int i=0; i<sizetek;i++) contents[i]=A.contents[i];}
 
template<class type> int Tset<type>::InSet(int Nn)
               {type c; int k=0;
               if(Nn>Getsize()) Nn=Getsize();
               cout<<"Ââåäèòå"<<Nn<<"ýëåìå*òîâ ì*îæåñòâ*: "<<endl;
               for(int i=0;i<Nn;i++)
                       {cin>>c; if(!In(c)){if(!SetEl(k,c)) return 0; k+=1;}}
               return 1;}
               
template<class type> void Tset<type>::OutSet()
               {cout<<"Ñîäåðæèìîå ì*îæåñòâ*: "<<endl;
               if(sizetek!=0){for(int i=0;i<sizetek;i++) cout<<" "<<GetEl(i);}
               else cout<<"Ïóñòîå ì*îæåñòâî";
               cout<<endl;}
 
template<class type> int Tset<type>::In(type m)
               {for(int i=0; i<sizetek;i++) if(m==GetEl(i)) return 1;
               return 0;}
 
template<class type> void Tset<type>::Add(type m)
               {if(!In(m)) if(sizetek<size) SetEl(sizetek,m);}
 
template<class type> void Tset<type>::Del(type m)
               {int h;
               if(In(m)){h=0;
                         for(int i=0;i<sizetek;i++)
                                 if(h) contents[i-1]=contents[i];
                                 else if(m==GetEl(i)) h=1;
                         sizetek-=1;}
               }
               
template<class type> Tset<type> & Tset<type>::operator =(Tset<type> &B)
               {cout<<"îïåð*öèÿ ïðèñâ*èâ**èÿ"<<endl;
               if(this==&B) return *this;
               if(contents!=NULL) delete [] contents;
               contents=new type [size=B.Getsize()];
               sizetek=B.sizetek;
               for(int i=0;i<sizetek;i++) {contents[i]=B.contents[i];}
               return *this;}
 
template <class type> Tset<type> & Tset<type>::operator +(Tset<type> &B)
         {for (int i=0; i<B.sizetek;i++) Add(B.GetEl(i));return *this;}
template <class type> Tset<type> &Tset<type>::CrossSet(Tset<type> &B)
         {int i=0;
         do{if(!B.In(GetEl(i))) Del(GetEl(i)); else i++;}
         while (i<sizetek);
         return *this;}
         
template <class type> Tset<type> & operator -(Tset<type> &A, Tset<type> &B)
         {Tset<type> *C=new Tset<type>(A.Getsize());
         for(int i=0; i<A.sizetek;i++) if(!B.In(A.GetEl(i))) C->Add(A.GetEl(i));
         return *C;}
         
template <class type> Tset<type> & operator *(Tset<type> &A, Tset<type> &B)
         {int l;
         if(A.Getsize()>B.Getsize()) l=A.getsize; else l=B.Getsize();
         Tset<type> *C=new Tset<type>(l);
         for(int i=0;i<A.sizetek;i++)
                 {if(B.In(A.GetEl(i))) C->Add(A.GetEl(i));}
         return *C;}
 
int main()
{ int n;
Tset<char> aa(4), bb(7),dd(5),cc;
cout<<"Ââåäèòå ÷èñëî ÷ëå*îâ ôîðìèðóåìîãî ì*îæåñòâ* n<= ";
cout<<aa.Getsize()<<endl; cin>>n; aa.InSet(n);
cout<<"Ââåäèòå ÷èñëî ÷ëå*îâ ôîðìèðóåìîãî ì*îæåñòâ* n<= ";
cout<<bb.Getsize()<<endl; cin>>n; bb.InSet(n);
cout<<"Ââåäèòå ÷èñëî ÷ëå*îâ ôîðìèðóåìîãî ì*îæåñòâ* n<= ";
cout<<dd.Getsize()<<endl; cin>>n; dd.InSet(n);
 
cout<<"Ì*îæåñòâî ** "<<endl; aa.OutSet();
cout<<"Ì*îæåñòâî bb "<<endl; bb.OutSet();
cout<<"Ì*îæåñòâî dd "<<endl; dd.OutSet();
 
Tset<char> ee=aa*bb;
cout<<"Ïåðåñå÷å*èå ì*îæåñòâ aa è bb"<<endl; ee.OutSet();
aa=aa+dd;
cout<<"îáúåäè*å*èå ì*îæåñòâ aa è dd"<<endl; aa.OutSet();
cc=dd-bb;
cout<<"äîïîë*å*èå ì*îæåñòâ dd è bb"<<endl; cc.OutSet();
cc.OutSet();
 
 
 
 
getchar();
getchar();
}
3
)))

35
36 ...
35 D:\ýòî ðàáîòàåò.cpp [Warning] friend declaration `Tset<type>& operator*(Tset<type>&, Tset<type>&)' declares a non-template function

35 D:\ýòî ðàáîòàåò.cpp [Warning] (if this is not what you intended, make sure the function template has already been declared and add <> after the function name here) -Wno-non-template-friend disables this warning
Similar
41792 / 34177 / 6122
: 12.04.2006
: 57,940
28.06.2012, 15:00     set
:

C++ Character Set Use Multy-Byte Character Set
set - ? C++
C++ STL . SET, set
C++ set ()
C++ vector ++ Set,
std::set C++
, : C++
C++ Set ()



:
.
Choopa
   Choopa
17 / 17 / 0
: 03.04.2011
: 89
28.06.2012, 18:13     set #2
- , privat public friend
Yandex
28.06.2012, 18:13     set

: 08:36. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
@Mail.ru