/** * @title: Result.cpp * @date: 2004.11.16 - 18:02 * @author: vinnie * @implementation for CResult class */ #include #include "Result.h" CResult:: CResult( ) { initChar = 0; finalChar = 0; } CResult::~CResult( ) { } /////////////////////////////////////////////////////// // accessor void CResult::GetDirtyChar( ) { for ( int i = 0; i < 3; i++) { for ( int j = 7; j >= 0; j--) printf( "%d", dirtyChar[i][j] ); printf( " "); } } void CResult::GetFinal( ) { printf( "%c", finalChar ); } void CResult::GetNoise( ) { for ( int i = 0; i < 3; i++) { for ( int j = 7; j >= 0; j--) printf( "%d", noiseChar[i][j] ); printf( " "); } } void CResult::GetOrigChar( ) { for ( int i = 7; i >= 0; i--) printf( "%d", origChar[i] ); printf( " "); } void CResult::GetResChar( ) { for ( int i = 7; i >= 0; i--) printf( "%d", resChar[i] ); printf( " "); } /////////////////////////////////////////////////////// // modifiers void CResult::AddNoiseToChar( ) { for ( int i = 0; i < 3; i++) for ( int j = 0; j < 8; j++) { if ( noiseChar[i][j] ) { if ( origChar[j] ) dirtyChar[i][j] = 0; else dirtyChar[i][j] = 1; } else dirtyChar[i][j] = origChar[j]; } } void CResult::BuildResult( ) { for ( int i = 0; i < 8; i++) { int zeros = 0; int ones = 0; for ( int j = 0; j < 3; j++) { if ( dirtyChar[j][i] ) ++ones; else ++zeros; } zeros > ones ? resChar[i] = 0 : resChar[i] = 1; } } void CResult::DecToBin( int x) { for( int i = 0; i < 8; i++) origChar[i] = (x >> i) & 0x1; } void CResult::SetNoiseChar( const int* iAr, int i) { for ( int j = 0; j < 8; j++) noiseChar[i][j] = *(iAr + j); } void CResult::SetOrigChar( char c) { initChar = c; DecToBin( (int) c); } void CResult::SetResChar( ) { int i = 8; finalChar = 0; while ( i--) { finalChar <<= 1; finalChar += resChar[i]; } }