종합시험

문제 1:  컬러 RGB 값이 16비트 형식으로 “R이 5비트, G가 6비트, B가 5비트"로 구성되어 있을 때 R 값을 현재 2배의 밝기만큼 증가 시키는 루틴을 작성하시오

문제 2:  3D 좌표 (x, y, z)를 표현하는 구조체를 선언하고, 이 구조체를 입력으로 하는 함수를 작성한다. 여기서 함수의 기능은 3D 좌표를 포인터로 입력 받아 x, y z 각각의 값을 3,5,7만큼 증가 시키는 기능을 수행한다.

문제 3:  서로 다른 알고리즘을 사용하여 숫자를 1부터 10까지 더하는 3개의 프로그램 루틴을 작성하시오.

답 1
Color = ((Color&0xf800)«1) + (Color&0x07ff) ;

답2
struct Vector
{
 float X;
 float Y;
 float Z;
};

                void MakeTransform( Vector* pVec )
    {
         pVec->X += 3.f;
         pVec->Y += 5.f;
         pVec->Z += 7.f;
    }

답3

int sum = 0;
sum = 1+2+3+4+5+6+7+8+9+10

2. 
int sum = 0;
int i=0;
for (i=1 ; i<=10 ; i++)
    {
        sum += i++;
    }

3. 
int sum = 0;
int i = 1;
while(i<=10)
{
    sum +=i;
    i++;
}

//=============================================================================
// Vector : 3D좌표 구조체
//=============================================================================
struct Vector
{
 float X;
 float Y;
 float Z;

 // 생성자에서 입력 받음
 Vector( float fX, float fY, float fZ )
 {
  X = fX;
  Y = fY;
  Z = fZ;
 }
};

//=============================================================================
// MakeTransform : vector를 입력받아서 해당 vector의 위치를 이동시킴
//=============================================================================
void MakeTransform( Vector* pVec )
{
 if( pVec == NULL )
  return;

 pVec->X += 3.f;
 pVec->Y += 5.f;
 pVec->Z += 7.f;
}

int _tmain(int argc, _TCHAR* argv[])
{
 Vector* pVec = new Vector( 10.f, 10.f, 10.f );

 printf( “+=================================+\n” );
 printf( “Start Application\n” );

 printf( “Before Transform : %0.3f / %0.3f / %0.3f\n”, pVec->X, pVec->Y, pVec->Z );

 MakeTransform( pVec );

 printf( “After Transform : %0.3f / %0.3f / %0.3f\n”, pVec->X, pVec->Y, pVec->Z );

 delete pVec;
 pVec = 0;

 printf( “End Application\n” );
 printf( “+=================================+\n” );
 
 return 0;

Hugo로 만듦
JimmyStack 테마 사용 중