Pagini recente » Cod sursa (job #618130) | Cod sursa (job #2309413) | Cod sursa (job #229351) | Cod sursa (job #2313251) | Cod sursa (job #1870287)
#include <fstream>
#include <bitset>
using namespace std;
#define read in>>
#define write out<<
#define I32 int
#define B1 bitset<1>
class StreamClass
{
private:
string name="adunare";
public:
string Reader()
{
string arg=name;
arg+=".in";
return arg;
}
string Writer()
{
string arg=name;
arg+=".out";
return arg;
}
}Stream;
class ElementsClass
{
private:
public:
I32 ValueDec;
void TurnToBin()
{
for (I32 i=0;i<(1<<5);i++)
{
ValueBin[i]=ValueDec%(1<<1);
ValueDec/=1<<1;
}
}
void TurnToDec()
{
ValueDec=0;
for (I32 i=0;i<(1<<5);i++)
{
ValueDec+=ValueBin[i]<<i;
}
}
bitset <1<<5> ValueBin;
void SetVal(I32 arg)
{
ValueDec=arg;
TurnToBin();
}
I32 GetVal()
{
return ValueDec;
}
//DECI ASA SE ADUNA. DA?
ElementsClass operator +(ElementsClass ECarg)
{
ElementsClass Ret;
bool Transport;
bool Sum;
for (I32 i=0;i<(1<<5);i++)
{
Sum=(ECarg.ValueBin[i]^this->ValueBin[i])^Transport;
Transport=((ECarg.ValueBin[i] && this->ValueBin[i]) || (ECarg.ValueBin[i] && Transport) || (this->ValueBin[i] && Transport))?1:0;
ECarg.ValueBin[i]=ECarg.ValueBin[i]^Sum;
Sum=Sum^ECarg.ValueBin[i];
ECarg.ValueBin[i]=ECarg.ValueBin[i]^Sum;
}
ECarg.TurnToDec();
return ECarg;
}
}A,B;
ifstream in (Stream.Reader().c_str());
ofstream out (Stream.Writer().c_str());
inline void Read()
{
I32 aux;
read aux;
A.SetVal(aux);
read aux;
B.SetVal(aux);
}
int main()
{
Read();
A = A+B;
write A.ValueDec;
return 0;
}