Çʵå Å×½ºÆ®

1. [¼Ò½º 14-1]¿¡ ³ª¿À´Â ÇÔ¼öÀÇ ¿øÇüÀ» ºÐ¼®Çغ¸ÀÚ. °¢ ÀÎÀÚÀÇ Å¸ÀÔ°ú °ü·ÃÇØ¼­ ³»ºÎÀûÀÎ ÀÎÀÚ Àü´Þ ¹æ½ÄÀ» ¼³¸íÇϰí, ¿øÇüÀ¸·Î ÃßÁ¤ÇÒ ¼ö ÀÖ´Â ¸Å°³º¯¼öÀÇ ¿ëµµ¸¦ ¼³¸íÇÏÀÚ.

 

Á¤´ä->

// µ¥ÀÌŸ¸¦ ¾ÐÃàÇÏ´Â ÇÔ¼ö

// pBufIn : ÀÔ·Â µ¥ÀÌŸ

// pBufOut : Ãâ·Â µ¥ÀÌŸ

// nActualDataLength : µ¥ÀÌŸÀÇ Å©±â (in, out)

// ¹Ýȯ°ª : ¼º°ø ¿©ºÎ

int Compress( const char* pBufIn, char* pBufOut, int& nActualDataLength)

{

             if (NULL == pBufIn || NULL == pBufOut || 0 == nActualDataLength)

                           return INVALID_ARGUMENT;

 

             int nOutputDataLength = 0;

             for (int i = 0; i < nActualDataLength; ++i)

             {

                           // µ¥ÀÌŸ¸¦ ¾ÐÃàÇÏ´Â Äڵ尡 µé¾î°£´Ù.

                           // ÀÚ¼¼ÇÑ ÄÚµå´Â »ý·«ÇÑ´Ù.

             }

 

             nActualDataLength = nOutputDataLength;

             return OK;

}

 

ù¹øÂ° ÀÎÀÚ pBufIn. ÀϹÝÀûÀ¸·Î char* ŸÀÔÀº ¹®ÀÚ¿­°ú °°Àº ¸Þ¸ð¸® ºí·ÏÀ» °¡¸®Å²´Ù. const char* ÀÎ Á¡À¸·Î ºÁ¼­ ÀÌ ÇÔ¼ö´Â pBufInÀÌ °¡¸®Å°´Â ¸Þ¸ð¸® ºí·°ÀÇ ³»¿ëÀ» º¯°æÇÏÁö ¾Ê´Â´Ù´Â Á¡À» ¾Ë ¼ö ÀÖ´Ù.

 

µÎ¹øÂ° ÀÎÀÚ pBufOutÀÌ char* ÀÎ °ÍÀ¸·Î ºÁ¼­ ÀÌ ÇÔ¼ö¿¡¼­´Â pBufOutÀÌ °¡¸®Å°´Â ¸Þ¸ð¸® ºí·ÏÀÇ ³»¿ëÀ» º¯°æÇÒ °ÍÀ̶ó´Â Á¡À» ÃßÃøÇÒ ¼ö ÀÖ´Ù.

 

¼¼¹øÂ° ÀÎÀÚ nActualDataLength°¡ int& ŸÀÔÀÎ °ÍÀ¸·Î ºÁ¼­ ÀÌ ÇÔ¼ö ¾È¿¡¼­ nActualDataLength¿¡ ¾î¶² °ªÀ» ³Ö¾î¼­ ¿ÜºÎ¿¡¼­ ¾Ë¸± °ÍÀ̶ó´Â ÃßÃøÀ» ÇÒ ¼ö ÀÖ´Ù.

 

ÀÎÀÚÀÇ Å¸ÀÔÀ¸·Î ÇÒ ¼ö ÀÖ´Â ÃßÃøÀº ÀÌ Á¤µµ°¡ ÀüºÎ°í, ³ª¸ÓÁö ³»¿ëÀº º¯¼öÀÇ À̸§À̳ª ÁÖ¼®µîÀ» ÅëÇØ¼­ ÃßÃøÇØ³»´Â ¼ö ¹Û¿¡ ¾ø´Ù. ÁÖ¼®¿Í ÇÔ¼öÀÇ À̸§ µîÀ» ÅëÇØ¼­ µ¥ÀÌŸ¸¦ ¾ÐÃàÇØÁÖ´Â ÇÔ¼öÀÓÀ» ¾Ë ¼ö ÀÖ´Ù.

 

2. ¿©·¯ºÐ°ú ÇÊÀÚ°¡ ÇÑ ÆÀÀÌ µÇ¾ú´Âµ¥, ÇÊÀÚ°¡ ¸ÞÀÎ ÇÁ·Î±×·¡¸Ó°í ¿©·¯ºÐÀº ÀÌÁ¦ ¸· µé¾î¿Â ½ÅÀÔ»ç¿øÀÌ´Ù. (ÇÊÀÚ¸¶À½´ë·Î Á¤Çß´Ù.) ÇÊÀÚ´Â 5°³ÀÇ Á¤¼ö Áß¿¡¼­ Áß°£ °ªÀ» ±¸ÇÏ´Â ÇÔ¼ö°¡ ÇÊ¿äÇØÁ³´Ù. ±×·¡¼­ ´ÙÀ½°ú °°ÀÌ È£ÃâÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ¸¸µé¾î ÁÙ °ÍÀ» ¿©·¯ºÐ¿¡°Ô ¿ä±¸Çß´Ù. ÇÔ¼ö¸¦ ¸¸µé¾î´Þ¶ó.

(Âü°í: Áß°£ °ªÀ̶õ ¿¹¸¦ µé¾î 5°³ÀÇ Á¤¼ö¸¦ Å©±â ¼øÀ¸·Î ³ª¿­ÇßÀ» ¶§, Áß°£¿¡ À§Ä¡ÇÏ´Â °ªÀ» ¸»ÇÑ´Ù)

 

int mid = MidValue( 9, 1, 15, 3, 7); // mid¿¡´Â 7ÀÌ µé¾î°£´Ù.

 

Á¤´ä->

´ÙÀ½Àº MidValue()¸¦ ±¸ÇöÇÑ ¿¹´Ù. MidValue() ÇÔ¼ö ¾È¿¡¼­ °ªÀÌ Å« ¼ø¼­´ë·Î ÀÎÀÚ¸¦ ¹è¿­¿¡ º¸°üÇϴµ¥, ÀÌ¿Í °°ÀÌ Å©±â ¼ø¼­´ë·Î °ªÀ» ³ª¿­ÇÏ´Â ÀÛ¾÷À» Á¤·Ä(Sorting)À̶ó°í ºÎ¸¥´Ù. Á¤·Ä¿¡´Â ¿©·¯ °¡Áö ¹æ¹ýÀÌ Àִµ¥, ÇÊÀÚ°¡ »ç¿ëÇÑ °ÍÀº °Åǰ Á¤·Ä(Bubble Sorting)ÀÌ´Ù. ÀÌ Á¤·Ä ¹æ¹ýÀº ¾Ë°í¸®ÁòÀÌ °£´ÜÇÑ ¹Ý¸é¿¡ ¼öÇà È¿À²ÀÌ ÁÁÁö ¾ÊÀº °ÍÀ¸·Î À¯¸íÇÏ´Ù.

 

¿©·¯ºÐÀÌ Á÷Á¢ Äڵ带 ºÐ¼®Çؼ­ °Åǰ Á¤·ÄÀÇ ¾Ë°í¸®ÁòÀ» ÆÄ¾ÇÇØ³»´Â °Íµµ °¡´ÉÇϰÚÁö¸¸,  ÀÎÅͳÝÀ̳ª ¾Ë°í¸®Áò ¼­ÀûÀ» ÅëÇØ¼­ °øºÎÇÏ´Â °ÍÀÌ ÈξÀ ´É·üÀûÀÏ °ÍÀÌ´Ù. Áß¿äÇÑ °ÍÀº MidValue() ³»¿¡¼­ ¾î¶² ¹æ½ÄÀ» »ç¿ëÇÏ´øÁö °£¿¡ main() ÇÔ¼ö¿¡´Â ¾Æ¹«·± ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù´Â Á¡À» ÀØÁö ¾Ê´Â °ÍÀÌ´Ù.

 

#include <iostream>

using namespace std;

 

int MidValue(int v1, int v2, int v3, int v4, int v5)

{

             // Á¦ÀÏ Å« ¼ø¼­´ë·Î ¹è¿­¿¡ ´ã´Â´Ù.

             int sorted[5] = {v1, v2, v3, v4, v5};

 

             for (int i = 0; i < 4; ++i)

             {

                           for (int j = 0; j < 4 - i; ++j)

                           {

                                        if ( sorted[j] > sorted[j+1] )

                                        {

                                                     // sorted[j]¿Í sorted[j+1]ÀÇ °ªÀ» ¸Â¹Ù²Û´Ù

                                                     int temp = sorted[j];

                                                     sorted[j] = sorted[j + 1];

                                                     sorted[j + 1] = temp;

                                        }

                           }

             }

 

             // °¡¿îµ¥ ÀÖ´Â °ªÀ» ¹ÝȯÇÑ´Ù.

             return sorted[2];

}

 

int main()

{

             int mid = MidValue(9, 1, 15, 3, 7);

 

             cout << "mid = " << mid << "\n";

 

             return 0;

}

 

3. ¿©ÀüÈ÷ ¿©·¯ºÐ°ú ÇÊÀÚ°¡ ÇÑ ÆÀÀÌ´Ù. ¿©·¯ºÐÀÌ ¾Õ¿¡¼­ ¸¸µç ÇÔ¼ö´Â ¸Å¿ì ÈǸ¢ÇßÁö¸¸ ´õ ¸¹Àº °³¼öÀÇ Á¤¼ö¸¦ ÀÔ·Â ¹Þ°Ô °³¼±ÇØ¾ß ÇÑ´Ù. ±×·¡¼­ À̹ø¿¡´Â ¹è¿­À» ÅëÇØ¼­ Á¤¼ö °ªµéÀ» ÀÔ·Â ¹Þ±â·Î °áÁ¤Çß´Ù. ´ÙÀ½°ú °°ÀÌ È£ÃâÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ¸¸µé¾î ´Þ¶ó.

(Âü°í: ÀÔ·ÂµÈ Á¤¼öÀÇ °³¼ö°¡ ¦¼ö°³ÀÎ °æ¿ì¿¡´Â Á¤È®ÇÏ°Ô °¡¿îµ¥ ÀÖ´Â Á¤¼ö°¡ ¾ø´Ù. ¿¹¸¦ µé¾î¼­ ÀÔ·ÂµÈ Á¤¼öÀÇ °³¼ö°¡ 10°³¶ó¸é 5¹øÂ°·Î ÀÛÀº ¼ö¸¦ ¹ÝȯÇÏ¸é µÈ´Ù)

 

int arr[10] = {8, 10, 7, 2 16, 9, 1, 0, 3, 5 };

int mid = MidValue( arr, 10);

// mid¿¡´Â 5°¡ µé¾î°£´Ù.

 

// mid¿¡´Â 8ÀÌ µé¾î°£´Ù.

mid = MidValue( arr, 5);

 

Á¤´ä->

#include <iostream>

using namespace std;

 

int MidValue(const int arr[], int len)

{

             // ¿øº» ¹è¿­À» º¸Á¸Çϱâ À§Çؼ­

             // ¹è¿­ÀÇ º¹»çº»À» ¸¸µé¾î¼­ ÀÛ¾÷ÇÑ´Ù.

             int sorted[100];

             for (int i = 0; i < len; ++i)

                           sorted[i] = arr[i];

 

 

             // Á¦ÀÏ Å« ¼ø¼­´ë·Î ¹è¿­¿¡ ´ã´Â´Ù.

             for (int i = 0; i < len -1; ++i)

             {

                           for (int j = 0; j < len -1 - i; ++j)

                           {

                                        if ( sorted[j] > sorted[j+1] )

                                        {

                                                     // sorted[j]¿Í sorted[j+1]ÀÇ °ªÀ» ¸Â¹Ù²Û´Ù

                                                     int temp = sorted[j];

                                                     sorted[j] = sorted[j + 1];

                                                     sorted[j + 1] = temp;

                                        }

                           }

             }

 

             // °¡¿îµ¥ ÀÖ´Â °ªÀ» ¹ÝȯÇÑ´Ù.

             return sorted[ (len -1) / 2];

}

 

int main()

{

             int arr[10] = {8, 10, 7, 2, 16, 9, 1, 0, 3, 5 };

             int mid = MidValue( arr, 10);

             cout << "mid = " << mid << "\n";

 

             mid = MidValue( arr, 5);

             cout << "mid = " << mid << "\n";

 

             return 0;

}

 

 

 

4. ´ÙÀ½ Äڵ带 ºÐ¼®Çغ¸ÀÚ. ÃÖÁ¾ÀûÀ¸·Î º¯¼ö a, b, c¿¡ ³²´Â °ªÀº ¹«¾ùÀÌ µÉ±î?

 

#include <iostream>

using namespace std;

 

void Sub(int i, int* p, int& r)

{

             i = 10;

             *p = 20;

             r = 30;

}

 

int main()

{

             int a = 0, b = 0, c = 0;

 

             Sub(a, &b, c);

             cout << a << " " << b << " " << c << "\n";

 

             return 0;

}

 

Á¤´ä->

a, b, cÀÇ °ªÀº °¢°¢ 0, 20, 30ÀÌ µÈ´Ù. Æ÷ÀÎÅͳª ·¹ÆÛ·±½º¸¦ »ç¿ëÇÑ °æ¿ì¿¡¸¸ Sub() ÇÔ¼ö ¾È¿¡¼­ÀÇ ´ëÀÔÀÌ main() ÇÔ¼ö±îÁö ¿µÇâÀ» ¹ÌÄ¡±â ¶§¹®ÀÌ´Ù.

!!

5. ¾ÕÀÇ 4¹ø ¹®Á¦¿¡¼­ Sub() ÇÔ¼ö´Â ¾ÈÁ¤¼º°ú °ü·ÃµÈ ¹®Á¦¸¦ °¡Áö°í ÀÖ´Ù. ÇÊÀÚ´Â ÀÌ¹Ì Æ÷ÀÎÅÍ Å¸ÀÔÀÇ º¯¼ö¸¦ »ç¿ëÇÒ ¶§ ÁÖÀÇÇÒ Á¡À» ¼³¸íÇÑ ¹Ù ÀÖ´Ù. Sub() ÇÔ¼ö°¡ ¾ÈÁ¤¼ºÀ» Áö´Ñ ÇÔ¼ö°¡ µÇ°Ô ¼öÁ¤Çغ¸ÀÚ.

 

Á¤´ä->

Æ÷ÀÎÅÍ º¯¼ö¿¡ ³Ñ°Ü¿À´Â °ªÀÌ NULLÀÌ ¾Æ´ÑÁö °Ë»çÇÒ Çʿ䰡 ÀÖ´Ù. NULLÀÌ ¾Æ´Ñ °æ¿ì¶ó°í ÇØµµ 100% ¹ÏÀ» ¼ö ÀÖ´Â °ÍÀº ¾Æ´ÏÁö¸¸,  »ó´ç ºÎºÐÀÇ ¹®Á¦¸¦ ¿¹¹æÇÒ ¼ö ÀÖ´Ù.

 

void Sub(int i, int* p, int& r)

{

             if (NULL == p)

                           return;

 

             i = 10;

             *p = 20;

             r = 30;

}

 

 

6. ´ÙÀ½ ¼Ò½º Äڵ带 ºÐ¼®Çغ¸ÀÚ. Func() ÇÔ¼öÀÇ ¼º´É»óÀÇ ´ÜÁ¡À» ÁöÀûÇÏ°í °³¼±Çغ¸ÀÚ.

struct MainInfo

{

             char name[20];

             int val1;

             int val2;

             double val3;

};

 

void Func(MainInfo mi)

{

             // miÀÇ °ªÀ» Àб⸸ ÇÑ´Ù.

}

 

Á¤´ä->

ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§¸¶´Ù »õ·Î¿î ±¸Á¶Ã¼°¡ »ý¼ºµÇ±â ¶§¹®¿¡ ¸Þ¸ð¸®¸¦ ³¶ºñÇÏ°Ô µÇ°í, ±¸Á¶Ã¼ º¯¼ö°£¿¡ °ªÀÇ ´ëÀÔÀÌ ÀϾ¹Ç·Î ½Ã°£µµ ³¶ºñÇÏ°Ô µÈ´Ù. Func() ÇÔ¼ö¿¡¼­ miÀÇ °ªÀ» Àб⸸ ÇÑ´Ù¸é ÇÔ¼öÀÇ ¿øÇüÀ» ´ÙÀ½°ú °°ÀÌ °íÄ¡´Â °ÍÀÌ ÁÁ´Ù.

 

void Func(const MainInfo& mi)

 

7 ÀÌÂ÷¿ø ¹è¿­À» ÀÎÀÚ·Î Àü´ÞÇÒ ¶§ ³»ºÎÀûÀ¸·Î »ç¿ëµÇ´Â Æ÷ÀÎÅÍÀÇ Å¸ÀÔÀº ¾î¶² °ÍÀ̾î¾ß ÇÒ±î? °¡»óÀÇ Äڵ带 ÀÛ¼ºÇÏ°í ¸Þ¸ð¸® ±¸Á¶¸¦ ±×·Áº¸ÀÚ. ±×¸®°í ¿Ö ´ë°ýÈ£ÀÇ ¸Ç ¾Õ¸¸ ºñ¿öÁÖ¾î¾ß ÇÏ´ÂÁö »ý°¢Çغ¸ÀÚ.

 

Á¤´ä->

´ÙÀ½ ÇÁ·Î±×·¥¿¡¼­´Â µÎ °¡Áö ¹æ¹ýÀ» »ç¿ëÇØ¼­ 2Â÷¿ø ¹è¿­À» Àü´ÞÇϰí ÀÖ´Ù.

 

void Sub1(int arr1[][3])

{

     arr[0][0] = 100;

}

 

void Sub2(int (*arr2)[3])

{

     arr[0][0] = 200;

}

 

int main()

{

     int arr[3][3] = {0};

 

     Sub1( arr);

     Sub2( arr);

 

     return 0;

}

¼Ò½º Äڵ忡¼­ º¼ ¼ö ÀÖ´Â °Íó·³ ¹è¿­¿¡ ´ëÇÑ Æ÷ÀÎÅÍ Å¸ÀÔÀ» »ç¿ëÇØ¼­ ÀÌÂ÷¿ø ¹è¿­À» Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. ¿Ö ÀÌ·¸°Ô µÇ´ÂÁö ÀǾÆÇØÇÒ ¼öµµ ÀÖÁö¸¸, °õ°õÈ÷ »ý°¢ÇÏ¸é ¾î·Á¿ï °ÍÀÌ ¾ø´Ù.  ÀÏÂ÷¿ø ¹è¿­ÀÇ °æ¿ì¿Í ´Ù¸¦ °ÍÀÌ ¾ø±â ¶§¹®ÀÌ´Ù.

 

¡®int ŸÀÔÀÇ ¹è¿­¡¯À» ¹Þ±â À§Çؼ­´Â ¡®int ŸÀÔ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¡¯¸¦ »ç¿ëÇÒ ¼ö ÀÖ¾ú´Ù. ±×·±µ¥ ÀÌÂ÷¿ø ¹è¿­Àº ¡®¹è¿­ÀÇ ¹è¿­¡¯ÀÌ´Ù. ±×·¯¹Ç·Î ¡®¹è¿­ÀÇ ¹è¿­¡¯À» ¹Þ±â À§Çؼ­´Â ¡®¹è¿­¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¡¯¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¿¹Á¦¿¡¼­ »ç¿ëµÈ ¹è¿­Àº ¡®int ŸÀÔÀÇ ¹è¿­ÀÇ ¹è¿­¡¯ À̾ú±â ¶§¹®¿¡ ¡®int ŸÀÔÀÇ ¹è¿­¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¡¯¸¦ »ç¿ëÇÑ °ÍÀÌ´Ù.