문제 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;