ij·µÀÌ °³ÇàµÈ Áٷεµ À̵¿ÇÏ·Á¸é ÇöÀç À§Ä¡ off°¡ ȸé»óÀÇ ¾îµðÂë¿¡ ÇØ´çÇÏ´ÂÁö ÁÂÇ¥¸¦ ãÀ» ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ Ä¿¼À̵¿Å°·Î ij·µÀ» À̵¿ÇÏ·Á¸é ¿ÀÇÁ¼ÂÀ¸·ÎºÎÅÍ ÁÙ°ú Ä ¹øÈ£¸¦ ãÀ» ¼öµµ ÀÖ¾î¾ß ÇÑ´Ù. ¹®Á¦´Â ¸Þ¸ð¸®»ó¿¡¼´Â Ä°ú ÁÙ(¶Ç´Â Çà°ú ¿)ÀÇ °³³äÀÌ ¾ø´Ù´Â °ÍÀÌ´Ù. buf´Â ¿ÀÇÁ¼Â¸¸À¸·Î À§Ä¡¸¦ ±â¾ïÇÏ´Â ÀÏÂ÷¿øÀûÀÎ ±¸Á¶Àε¥ ºñÇØ È¸éÀº ¸Þ¸ð¸®¿Í´Â ´Þ¸® ÁÙ°ú ÄÀÇ °³³äÀÌ ÀÖ´Â ÀÌÂ÷¿øÀûÀÎ Çà·Ä ±¸Á¶·Î µÇ¾î ÀÖ´Ù. ±×·¡¼ ¿ÀÇÁ¼ÂÀ¸·ÎºÎÅÍ Çà·Ä°ªÀ» ±¸ÇÒ ¼ö ÀÖ¾î¾ß ÇÏ°í ¹Ý´ë·Î Çà·Ä°ªÀ¸·ÎºÎÅÍ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀ» ±¸ÇÒ ¼öµµ ÀÖ¾î¾ß Çϴµ¥ ´ÙÀ½ µÎ ÇÔ¼ö°¡ ÀÌ °è»êÀ» ÇÑ´Ù.
void GetRCFromOff(int nPos, int &r, int &c)
{
int s,e;
TCHAR *p=buf;
r=0;
while (p-buf != nPos) {
if (*p==¡®\r¡¯)
r++;
p++;
}
GetLine(r,s,e);
c=nPos-s;
}
int GetOffFromRC(int r, int c)
{
int s,e;
GetLine(r,s,e);
c=min(c,e-s);
return s+c;
}
GetRCFromOff ÇÔ¼ö´Â ¿ÀÇÁ¼ÂÀ» Àμö·Î ÁÖ¸é ÀÌ À§Ä¡°¡ ¸î ¹ø° ÁÙ(Row), ¸î ¹ø° Ä(Column)ÀÎÁö Á¶»çÇÑ´Ù. ¹öÆÛÀÇ Ã³À½ºÎÅÍ ½ÃÀÛÇؼ nPos¿¡ À̸¦ ¶§±îÁö °³Ç๮ÀÚÀÇ °³¼ö¸¦ ¼¼¾î º¸¸é ÀÌ °³¼ö°¡ ¹Ù·Î ÁÙ¹øÈ£°¡ µÈ´Ù. ÁÙ¹øÈ£¸¦ ±¸ÇßÀ¸¸é GetLine ÇÔ¼ö·Î ÀÌ ÁÙÀÇ ¹üÀ§¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ¿¹øÈ£´Â ÇöÀç À§Ä¡¿¡¼ ÁÙÀÇ ½ÃÀÛÀ§Ä¡ÀÎ s¸¦ »©¸é °£´ÜÇÏ°Ô ±¸ÇØÁø´Ù. ´ÙÀ½ ¹®¼¿¡¼ nPos À§Ä¡ÀÇ Çà·Ä°ªÀ» ±¸ÇÏ´Â °úÁ¤À» º¸ÀÚ. ÇöÀç À§Ä¡°¡ ¸¶Áö¸· ÁÙ ¡®ÀÌ¿ôµé¿¡°Ô¡¯ÀÇ ¡®¿¡¡¯ÀÚ¶ó°í ÇÏÀÚ.
¡®¿¡¡¯ÀÚ¿¡ À̸¦ ¶§±îÁö °³ÇàÄڵ带 ¼¼¾î º¸¸é 4°³ ¹ß°ßµÈ´Ù. µû¶ó¼ ÀÌ À§Ä¡´Â 4¹ø° ÁÙÀÓÀ» ½±°Ô ¾Ë ¼ö ÀÖ´Ù. 4¹ø° ÁÙÀÇ ½ÃÀÛÀ§Ä¡´Â GetLine ÇÔ¼ö·Î ±¸ÇÒ ¼ö Àִµ¥ nPos¿¡¼ ½ÃÀÛÀ§Ä¡ s¸¦ »©¸é ¸î ¹ø° ÄÀÎÁöµµ Á¶»çµÈ´Ù. Á¶»ç°á°ú ¡®¿¡¡¯ÀÚ´Â 4Çà 6¿¿¡ À§Ä¡ÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ÀÌ °á°ú¸¦ Àμö·Î Àü´ÞµÈ ·¹ÆÛ·±½º º¯¼ö r, c¿¡ ¸®ÅÏÇÑ´Ù.
ÀÌ ÇÔ¼ö´Â Àμö·Î Àü´ÞµÇ´Â nPos ¿ÀÇÁ¼ÂÀÌ Ç×»ó À¯È¿ÇÑ °ÍÀ¸·Î °¡Á¤ÇÏ°í ÀÖ´Ù. ¸¸¾à ¹öÆÛÀÇ ±æÀ̺¸´Ù ´õ ±ä ¿ÀÇÁ¼Â °ªÀÌ Àü´ÞµÇ¸é ÀÌ ÇÔ¼öÀÇ µ¿ÀÛÀº ¿¹ÃøÇÒ ¼ö ¾ø´Ù. Áï ¿¡·¯ 󸮸¦ ÇÏÁö ¾Ê´Â´Ù. ±×·¡¼ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÂÊ¿¡¼ nPos°¡ ¹Ýµå½Ã À¯È¿Çϵµ·Ï º¸ÀåÇØ¾ß ÇÑ´Ù. ¿Ö ¿¡·¯ 󸮸¦ ÇÏÁö ¾Ê´Â°¡ ÇÏ¸é ºÒÇÊ¿äÇÑ °è»êÀ» ÇÏÁö ¾ÊÀ½À¸·Î½á ¼Óµµ¸¦ Á¶±ÝÀÌ¶óµµ ³ôÀ̱â À§ÇؼÀÌ´Ù.
GetOffFromRC´Â ¹Ý´ë·Î r, c °ªÀ¸·ÎºÎÅÍ ´ëÀÀµÇ´Â ¿ÀÇÁ¼Â À§Ä¡¸¦ ±¸Çϴµ¥ ÄÚµå´Â ÈξÀ ´õ °£´ÜÇÏ´Ù. GetLineÀ¸·Î r ÁÙÀÇ ¹üÀ§¸¦ Á¶»çÇÏ¸é ¿øÇÏ´Â ¿ÀÇÁ¼ÂÀº s~e »çÀÌ¿¡ ÀÖ´Ù. Á¶»çµÈ ½ÃÀÛÀ§Ä¡ s °ª¿¡¼ c¸¦ ´õÇϸé ÀÌ Çà·Ä À§Ä¡¿¡ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀÌ ±¸ÇØÁø´Ù. ´Ü ±¸ÇØÁø ¿ÀÇÁ¼ÂÀÌ ¹Ýµå½Ã s~e »çÀÌ¿¡ ÀÖµµ·Ï Á¶Á¤ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. c°¡ ÁÙ ¹üÀ§ ¹Û¿¡ ÀÖ´õ¶óµµ °Á¦·Î ÁÙ ¾ÈÂÊÀ¸·Î ³Ö¾îÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ±×¸²À» º¸ÀÚ.
GetOffFromRC(0,4)¸¦ È£ÃâÇÑ °æ¿ì ½ÃÀÛÀ§Ä¡ s¿¡ 4¸¦ ´õÇÑ 4°¡ °á°ú ¿ÀÇÁ¼ÂÀÌ µÈ´Ù. ±×·¯³ª 0Çà 20¿À» ¿äûÇß´Ù¸é ÁÙÀÇ Á¦ÀÏ ³¡ÀÎ 17 ¿ÀÇÁ¼Â À§Ä¡¸¦ ´ë½Å ¸®ÅÏÇØ¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé 0Çà 20¿¿¡ ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀº ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¡¼ c¸¦ s¿¡ ´õÇϱâ Àü¿¡ ÁÙ ±æÀ̺¸´Ù ´õ ±æ´Ù¸é ÁÙ ±æÀÌ¿Í °°µµ·Ï ¸¸µå´Â c=min(c,e-s) Äڵ尡 ÇÊ¿äÇÏ´Ù.