!  ,  ,

- C++

> > >

 
C++ ? http://www.cyberforum.ru/cpp-beginners/thread262013.html
long long int mass;
C++ 55 -3 -1; . : ,... http://www.cyberforum.ru/cpp-beginners/thread262005.html
C++ DataGridView
, ! : this->dataGridView1->Rows->Cells->Style->BackColor =color->LightGray; :...
C++ -
int, - MyClass? int sred_znach(int x,...); { int...
C++ http://www.cyberforum.ru/cpp-beginners/thread261983.html
. ++. 1) , __ . (0 ,...
C++ GET POST . , ? , http://site.ru http://site.ru/index.php?get=_ . ...

prZzZ
112 / 92 / 5
: 22.03.2011
: 235
29.03.2011, 22:37
, (, std::string, CString, char*)...
...

7 20
: . . .

:
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
#ifndef __BINARY_H
#define __BINARY_H
 
#include <iostream>
#include <string>
 
class Binary  
{
public:
    Binary(const Binary& b = "");
    Binary& operator=(const Binary& b);
    Binary(const char*  b);
 
    Binary& operator +=(const Binary& b);
    Binary& operator -=(const Binary& b);
 
    friend std::ostream& operator <<(std::ostream& s, Binary& b)
    { return std::cout << b.data;}
    friend std::istream& operator >>(std::istream& s, Binary& b)
    { return std::cin  >> b.data;}
    
private:
    std::string data;
};
 
Binary operator +(const Binary& a, const Binary& b);
Binary operator -(const Binary& a, const Binary& b);
 
#endif __BINARY_H
:
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
#include "Binary.h"
 
#include <iostream>
#include <string>
 
/*Binary::Binary(std::string& b)
{
    data = b;   
}*/
 
Binary::Binary(const char *b)
{
    data = b;
}
 
 
Binary::Binary(const Binary &b)
{
    *this = b;
}
Binary& Binary::operator =(const Binary& b)
{
    data = b.data;
    return *this;
}
 
Binary& Binary::operator +=(const Binary& b)
{
    Binary t(b);                    // Ìîäèôèöèðîâ*òü *å èìååì ïð*âî...
    // Îïðåäåëÿåì **èáîëåå äëè**óþ ñòðîêó è òó, 
    // êîòîð*ÿ êîðî÷å, äîïîë*ÿåì ñïð*â* *óëÿìè.
    std::string tmp(abs(data.length()-t.data.length()),'0');
    if(data.length() > t.data.length())
        t.data = tmp + t.data;
    else
        data = tmp + data;
    
    // Ñîçä*¸ì äâ* îáð*ò*ûõ èòåð*òîð*, ò.ê. äâèã*òüñÿ áóäåì
    // â îáð*ò*îì **ïð*âëå*èè. ò.å. ñ êî*ö* ñòðîêè â **÷*ëî.
    std::string::reverse_iterator riData = data.rbegin();
    std::string::reverse_iterator riBData = t.data.rbegin();
    int c = 0;                      // Ôë*ã ïåðå*îñ*.
    while(riData != data.rend())    // Äâèã*åìñÿ ïî ñòðîêå ñ êî*ö* â **÷*ëî.
    {
        int i1 = *riData - 0x30;    // Ïðåîáð*çîâûâ*åì ñèìâîëû â ÷èñë*.
        int i2 = *riBData - 0x30;   // !!! ÀÊÒÓÀËÜÍÎ ÒÎËÜÊÎ ÄËß ASCII !!!
        int res = i1 + i2 + c;      // Âîò î*î ñëîæå*èå.
        c  = (res & 2) >> 1;        // Êîððåêòèðóåì ôë*ã ïåðå*îñ*
        res &= 1;                   // Ïîñëå ýòîãî êîððåêòèðóåì ðåçóëüò*ò.
        *riData = res + 0x30;       // Ç*ïèñûâ*åì îáð*ò*î, ïðåîáð*çîâ*â îáð*ò*î â ñèìâîë
        riData++; riBData++;        // Äâèã*åìñÿ ä*ëüøå...
    }
    if(c)                           // Åñëè ïåðåïîë*å*èå
        data = '1' + data;
    return *this;
}
 
Binary& Binary::operator -=(const Binary& b)
{
    Binary t(b);                    // Ìîäèôèöèðîâ*òü *å èìååì ïð*âî...
    // Îïðåäåëÿåì **èáîëåå äëè**óþ ñòðîêó è òó, 
    // êîòîð*ÿ êîðî÷å, äîïîë*ÿåì ñïð*â* *óëÿìè.
    std::string tmp(abs(data.length()-t.data.length()),'0');
    if(data.length() > t.data.length())
        t.data = tmp + t.data;
    else
        data = tmp + data;
    
    // Ñîçä*¸ì äâ* îáð*ò*ûõ èòåð*òîð*, ò.ê. äâèã*òüñÿ áóäåì
    // â îáð*ò*îì **ïð*âëå*èè. ò.å. ñ êî*ö* ñòðîêè â **÷*ëî.
    std::string::reverse_iterator riData = data.rbegin();
    std::string::reverse_iterator riBData = t.data.rbegin();
    int c = 0;                      // Ôë*ã ïåðå*îñ*.
    while(riData != data.rend())    // Äâèã*åìñÿ ïî ñòðîêå ñ êî*ö* â **÷*ëî.
    {
        int i1 = *riData - 0x30;    // Ïðåîáð*çîâûâ*åì ñèìâîëû â ÷èñë*.
        int i2 = *riBData - 0x30;   // !!! ÀÊÒÓÀËÜÍÎ ÒÎËÜÊÎ ÄËß ASCII !!!
        int res = i1 - i2 - c;      // Âîò î*î âû÷èò**èå.
        c  = (res & 2) >> 1;        // Êîððåêòèðóåì ôë*ã ïåðå*îñ*
        res &= 1;                   // Ïîñëå ýòîãî êîððåêòèðóåì ðåçóëüò*ò.
        *riData = res + 0x30;       // Ç*ïèñûâ*åì îáð*ò*î, ïðåîáð*çîâ*â îáð*ò*î â ñèìâîë
        riData++; riBData++;        // Äâèã*åìñÿ ä*ëüøå...
    }
    if(c)                           // Åñëè ïåðåïîë*å*èå
        data = '1' + data;
    return *this;
}
 
// ----Óòèëèòû êë*ññ*----
// Ïîñëå îïðåëåëå**ûõ ôó*êöèé +=,  -= è =
// ôó*êöèè ñëîæå*èÿ è âû÷èò**èÿ îïðåäåëÿþòñÿ òðèâè*ëü*î:
Binary operator +(const Binary& a, const Binary& b)
{
    Binary t = a;
    return t += b;
}
 
Binary operator -(const Binary& a, const Binary& b)
{
    Binary t = a;
    return t -= b;
}
:
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
#include <iostream>
#include "binary.h"
 
int main()
{
    Binary a;
    Binary b;
    Binary c;
    std::cin >> a >> b >> c;
 
    std::cout   << "a = " << a 
                << "\tb = " << b 
                << "\tc = " << c << std::endl;
    std::cout   << "a + b + c = " << a + b + c << std::endl
                << "a + b - c = " << a + b - c << std::endl
                << "a - b + c = " << a - b + c << std::endl
                << "a - b - c = " << a - b - c << std::endl;
    return 0;
}
 
:
1100 10 1
a = 1100        b = 10  c = 1
a + b + c = 1111
a + b - c = 1101
a - b + c = 1011
a - b - c = 1001
Press any key to continue
0
 
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.