Ejemplo n.º 1
0
/* numberのなかに、digit(0-9の1桁の整数)が何文字あるかを数える関数 */
int NumOfDigit(unsigned long number, unsigned long digit){
	int ret;
	ret = 0;

	/* 0桁ならば0を返す(何も含まれて居ない) */
	if(number == 0){
		return 0;
	}

	/* 1の位が digit であるかどうかのチェック */
	if(number % 10 == digit){
		ret = 1;	/* digit であれば、返り値に1つ足す */
	}

	/* 10で割ることによって次の桁移行のチェックを再帰的に行う */
	ret += NumOfDigit(number/10, digit);

	return ret;
}
Ejemplo n.º 2
0
void CheckNumber(void)
{
	/* 数字群を元に計算した結果の数字の個数が */
	/* 元の数字群と同じだけ使われているかどうかのチェック */
	/* 0は考慮しない */
	int i;
	unsigned long result;
	result = 0;

	/* 数字群を元に、計算結果を作成する */
	for(i=1; i<=9; i++){
		result += power[i] * number_using[i];
	}

	/* 計算結果の中の数字の個数が、数字群と同じかどうかチェックする */
	for(i=1; i<=9; i++){
		if(NumOfDigit(result, i) != number_using[i]){
			return;	/* 1つでも違えば、それは解ではない */
		}
	}
	printf("%lu \n", result); /* 計算結果は、解である */
	return;
}
Ejemplo n.º 3
0
void DrawBrowser_PageInfo(UINT8 ubID)
{
#if (BROWSER_STYLE==BROWSER_2ND_STYLE)

    UINT32  CurObjIdx, MaxObjIdx;
    char 	sz[20] ={0};

    if (AHC_FALSE == AIHC_GetOSDInitStatus()) { AHC_PRINT_RET_ERROR(gbAhcDbgBrk,0); return; }

    BEGIN_LAYER(ubID);

    AHC_UF_GetTotalFileCount(&MaxObjIdx);
	AHC_UF_GetCurrentIndex(&CurObjIdx);

    AHC_OSDSetFont(ubID, &GUI_Font16B_1);
    AHC_OSDSetColor(ubID, OSD_COLOR_WHITE);
    AHC_OSDSetBkColor(ubID, OSD_THUMB_BACKGROUND);
	AHC_OSDSetPenSize(ubID, 1);
    
    if(MaxObjIdx==0)
    	sprintf(sz, "%d/%d", CurObjIdx, MaxObjIdx);
    else
    	sprintf(sz, "%d/%d", CurObjIdx+1, MaxObjIdx);
     
    AHC_OSDDrawText(ubID, (UINT8*)sz, 195, 7, sizeof(sz));

#else

    RECT   	obRECT  	= POS_THUMB_OBLIQUE;
    UINT16  CurrPage 	= 0;
    UINT16  MaxPage 	= 0;
    UINT8   digit 		= 0;
    UINT16  leftpos 	= 0;

    if (AHC_FALSE == AIHC_GetOSDInitStatus()) { AHC_PRINT_RET_ERROR(gbAhcDbgBrk,0); return; }

    BEGIN_LAYER(ubID);

	#ifdef ENABLE_GUI_SUPPORT_MULTITASK
    AHC_OSDSetColor(ubID, OSD_COLOR_TRANSPARENT);
	#else
    AHC_OSDSetColor(OSD_COLOR_TRANSPARENT);
	#endif
    AHC_OSDDrawFillRect( ubID, (POS_CURPAGE_X-POS_PAGE_OFFSET), POS_CURPAGE_Y,
                               POS_MAXPAGE_X+20, 				POS_MAXPAGE_Y+16 ); 
    DrawBrowser_GetPageInfo(&CurrPage, &MaxPage);

	#ifdef ENABLE_GUI_SUPPORT_MULTITASK
    AHC_OSDSetFont(ubID, &GUI_Font16B_1);
    AHC_OSDSetColor(ubID, OSD_COLOR_WHITE);
    AHC_OSDSetBkColor(ubID, OSD_COLOR_TRANSPARENT);
	AHC_OSDSetPenSize(ubID, 1);
	#else
    AHC_OSDSetFont(&GUI_Font16B_1);
    AHC_OSDSetColor(OSD_COLOR_WHITE);
    AHC_OSDSetBkColor(OSD_COLOR_TRANSPARENT);
	AHC_OSDSetPenSize(1);
	#endif
	
    if(0 != MaxPage)
    {
        digit = NumOfDigit(MaxPage);
        leftpos = POS_PAGEINFO(digit, POS_CURPAGE_X);
        AHC_OSDDrawDec( ubID, CurrPage, leftpos,  POS_CURPAGE_Y, digit);
    
        leftpos = POS_PAGEINFO(digit, POS_MAXPAGE_X);
        AHC_OSDDrawDec( ubID, MaxPage, leftpos,  POS_MAXPAGE_Y, digit );
    
		#ifdef ENABLE_GUI_SUPPORT_MULTITASK
        AHC_OSDSetPenSize(ubID, 3);
        #else
        AHC_OSDSetPenSize(3);
        #endif
        
        AHC_OSDDrawLine( ubID, obRECT.uiLeft, obRECT.uiLeft+obRECT.uiWidth, obRECT.uiTop, obRECT.uiTop-obRECT.uiHeight);
    }
	else
	{	// one page  
        leftpos = POS_PAGEINFO(digit, POS_CURPAGE_X);
        AHC_OSDDrawDec( ubID, 0, leftpos,  POS_CURPAGE_Y, 1);
    
        leftpos = POS_PAGEINFO(digit, POS_MAXPAGE_X);
        AHC_OSDDrawDec( ubID, 0, leftpos,  POS_MAXPAGE_Y, 1);
    
		#ifdef ENABLE_GUI_SUPPORT_MULTITASK
        AHC_OSDSetPenSize(ubID, 3);
        #else
        AHC_OSDSetPenSize(3);
		#endif
		
        AHC_OSDDrawLine( ubID, obRECT.uiLeft, obRECT.uiLeft+obRECT.uiWidth, obRECT.uiTop, obRECT.uiTop-obRECT.uiHeight);
	}
#endif	

    END_LAYER(ubID);
}