´Ù¹èÀå Á¤¼öÀÇ °¨»ê


ÇÔ¼ö¸í
mpSub  ´Ù¹èÀå Á¤¼ö³¢¸®ÀÇ °¨»ê
Çü½Ä
void mpSub(int *ret, int *a, int *b);
Àμö
ret   (Ãâ·Â) ´Ù¹èÀå Á¤¼ö³¢¸®ÀÇ °¨»êÀÇ °á°ú(a - b)
a, b  (ÀÔ·Â) ´Ù¹èÀå Á¤¼ö(a ´Â b º¸´Ù Å«°¡ µ¿ÀÏÇÏ´Ù)
ÇÔ¼öÄ¡
¾øÀ½
ÁÖÀÇ »çÇ×
¿ë·Ê(mpSub-test.c )

ÇÁ·Î±×·¥(mpSub.c )
#define N 10000

void mpSub(int *ret, int *a, int *b)
{
    int  i;
    int  la, lb;
    int  *rr;
    int  x;

    la = *a;
    lb = *b;

    rr = ret;
    x = 0;
    for (i = 1; i <= la; i++) {
        x += *++a;
        if (i <= lb) x -= *++b;
        if (x >= 0) {
            *++rr = x;
            x = 0;
        } else {
            *++rr = x + N;
            x = -1;
        }
    }
    while (--i > 0)
        if (*rr-- ! = 0) break;
    *ret = i;
}
¼³¸í
10 Áø¼öÀÇ °è»ê°ú °°ÀÌ, ÇϾ´Ù »¬¼ÀÀ» ½ÇÇàÇÑ´Ù. À§ÀÇ ¸» º¸´Ù ¡¸ºô¸®°í¡¹°¡ ÇÊ¿äÇÑ ¶§´Â, À§ÀÇ ¸»¿¡ 1À» ¿©ºÐÀ¸·Î ´ç±ä´Ù.

°ü·Ã ÇÔ¼ö
´Ù¹èÀå Á¤¼öÀÇ °¡»ê, ´Ù¹èÀå Á¤¼öÀÇ °ö¼À, ´Ù¹èÀå Á¤¼öÀÇ Á¦»ê, ´Ù¹èÀå Á¤¼öÀÇ Æò¹æ±Ù, ´Ù¹èÀå Á¤¼öÀÇ ´ë¼Ò ºñ±³, ¼ö¿­À» ´Ù¹èÀå Á¤¼ö·Î º¯È¯ÇÏ´Â, ´Ù¹èÀå Á¤¼ö¸¦ ¼ö¿­·Î º¯È¯ÇÏ´Â, long Á¤¼ö¸¦ ´Ù¹èÀå Á¤¼ö·Î º¯È¯ÇÏ´Â, ´Ù¹èÀå Á¤¼ö¸¦ long Á¤¼ö·Î º¯È¯ÇÑ´Ù