Çʵå Å×½ºÆ®
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 ŸÀÔÀÇ ¹è¿¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¡¯¸¦ »ç¿ëÇÑ °ÍÀÌ´Ù.