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

Множества, STL - C++

Восстановить пароль Регистрация
 
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
09.03.2011, 20:07     Множества, STL #1
Всем привет
Нужно решить систему уравнений
A\X=B;
X\A=C.
где А, В, С - заданные множества.

Вот с использованием vector, все работает
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
#include <iostream>
#include <fstream>
//#include <list>
#include <vector>
using namespace std;
 
class Lab
{
    vector<int> A;
    vector<int> B;
    vector<int> C;
    vector<int> X;
public:
    Lab() {}
    void Set(char* str,vector<int>& V)
    {
        ifstream file(str);
        int a;
        while(!file.eof()) { file>>a; V.push_back(a); }
        file.close();
    } 
   void Solution()
    {
        Set("F:\\A.txt",A);
        Set("F:\\B.txt",B);
        Set("F:\\C.txt",C);
        if(BA() && AC())
        {
            unsigned i,j;
            for(i=0;i<A.size();i++) 
            { 
                bool re=true;                    
                for(j=0;j<B.size();j++) if(A[i]==B[j]) { re=false; break; }
                if(re) X.push_back(A[i]);
            }
            for(i=0;i<C.size();i++) X.push_back(C[i]);
            Print();
        }
    }
    bool BA()
    {
        unsigned i,j;
        for(i=0;i<B.size();i++) 
        { 
            bool re=true;                    
            for(j=0;j<A.size();j++) if(B[i]==A[j]) { re=false; break; } 
            if(re) { cout<<"  ГЏГ®Г¬ГЁГ«ГЄГ*!!!\n  B Г*ГҐ Г*Г*ëåæèòü A"<<endl; return false; }
        }
        return true;
    }
    bool AC()
    {
        unsigned i,j;
        for(i=0;i<A.size();i++) 
        { 
            for(j=0;j<C.size();j++) 
            if(A[i]==C[j]) { cout<<"  ГЏГ®Г¬ГЁГ«ГЄГ*!!!\n  ГЂ Гў ïåðåòèГ*i Г§ C Г*ГҐ Г¤Г*Вє ГЇГіГ±ГІГі Г¬Г*îæèГ*Гі"<<endl; return false; }
        }
        return true;
    }
    
    void Print()
    { 
        unsigned i;
        cout<<"  A / X = B"<<endl;
        cout<<"  X / A = C"<<endl;
        cout<<"- - -   - - -   - - -"; 
        cout<<"\n  ГЊГ*îæèГ*Г* A: ";
        for(i=0;i<A.size();i++) cout<<A[i]<<" ";  
        
        cout<<"\n  ГЊГ*îæèГ*Г* B: ";
        for(i=0;i<B.size();i++) cout<<B[i]<<" ";
        
        cout<<"\n  ГЊГ*îæèГ*Г* C: ";
        for(i=0;i<C.size();i++) cout<<C[i]<<" ";
        cout<<"\n- - -   - - -   - - -"; 
        ofstream file("F:\\Result.txt");
        cout<<"\n  ГЊГ*îæèГ*Г* Г•: ";
        for(i=0;i<X.size();i++) { cout<<X[i]<<" "; file<<X[i]<<" "; } 
        file.close();
    }
};
 
int main()
{
    setlocale(0,"");
    
    Lab T;
    T.Solution();
 
    cout<<endl;
    system("pause");
    return 1;
}

но нужно с использованием list и здесь не правильно работает
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
#include <iostream>
#include <fstream>
#include <list>
 
using namespace std;
 
class Lab
{
    list<int> A;
    list<int> B;
    list<int> C;
    list<int> X;
public:
    Lab() {}
    void Set(char* str,list<int>& L)
    {
        int a;
        ifstream file(str);
        while(!file.eof()) { file>>a; L.push_back(a); }
        file.close();
    } 
    void Solution()
    {
        Set("F:\\A.txt",A);
        Set("F:\\B.txt",B);
        Set("F:\\C.txt",C);
        if(BA() && AC())
        {
            list<int>::iterator i,j;
            for(i=A.begin();i!=A.end();i++) 
            { 
                bool re=true;                    
                for(j=B.begin();j!=B.end();j++) if(*i==*j) { re=false; break; }
                if(re) X.push_back(*i);
            }
            for(i=C.begin();i!=C.end();i++) X.push_back(*i);
            X.sort();
            Print();
        }
    }
    bool BA()
    {
        list<int>::iterator i,j;
        for(i=B.begin();i!=B.end();i++)
        { 
            bool re=true;                    
            for(j=A.begin();j!=A.end();j++) if(*i==*j) { re=false; break; } 
            if(re) { cout<<"  ГЏГ®Г¬ГЁГ«ГЄГ*!!!\n  B Г*ГҐ Г*Г*ëåæèòü A"<<endl; return false; }
        }
        return true;
    }
    bool AC()
    {
        list<int>::iterator i,j;
        for(i=A.begin();i!=A.end();i++)
        { 
            for(j=C.begin();j!=C.end();j++) 
            if(*i==*j) { cout<<"  ГЏГ®Г¬ГЁГ«ГЄГ*!!!\n  ГЂ Гў ïåðåòèГ*i Г§ C Г*ГҐ Г¤Г*Вє ГЇГіГ±ГІГі Г¬Г*îæèГ*Гі"<<endl; return false; }
        }
        return true;
    }
    
    void Print()
    { 
        list<int>::iterator i;
        cout<<"  A / X = B"<<endl;
        cout<<"  X / A = C"<<endl;
        cout<<"- - -   - - -   - - -"; 
        cout<<"\n  ГЊГ*îæèГ*Г* A: ";
        for(i=A.begin();i!=A.end();i++) cout<<*i<<" ";  
        cout<<"\n  ГЊГ*îæèГ*Г* B: ";
        for(i=B.begin();i!=B.end();i++) cout<<*i<<" "; 
        cout<<"\n  ГЊГ*îæèГ*Г* C: ";
        for(i=C.begin();i!=C.end();i++) cout<<*i<<" "; 
        cout<<"\n- - -   - - -   - - -"; 
        ofstream file("F:\\Result.txt");
        cout<<"\n  ГЊГ*îæèГ*Г* Г•: ";
        for(i=C.begin();i!=C.end();i++) { cout<<*i<<" ";  file<<*i<<" "; } 
        file.close();
    }
};
 
int main()
{
    setlocale(0,"");
    
    Lab T;
    T.Solution();
 
    cout<<endl;
    system("pause");
    return 1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 20:07     Множества, STL
Посмотрите здесь:

C++ Множества STL
C++ Как получить доступ к объектам set-множества? (STL)
Множества без STL C++
Множества. Вычислить количество элементов множества Q, связанного c исходными множествами C++
C++ STL, множества
C++ Число изъять из множества А, если оно является элементом множества А, но не является элементом множества В
STL Пересечение множества и вектора C++
Квадрат с вершинами из первого множества накрывает все точки второго множества и имеет минимальную площадь C++

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

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

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