2011-07-28 4 views
0

C에서 프로세스를 기록하려고하는데 더 간단한 해결책이 필요합니다.여러 항목의 값 계산

특정 장비가 켜져 있는지 각 비트가 나타내는 상태 바이트가 있습니다. 각 장비는 고정 된 전력 소비율을 가지고 있으며 ON/OFF 상태에 따라 전력 사용량을 기록하고 싶습니다.

그래서, 나는

struct { 
     unsigned int equip1; 
     unsigned int equip2; 
     ... 
     } equip_totals; 

및 업데이트, 나는

void update_equip_status(char *equip_status) 
{ 
if (&equip_staus = 0x01) 
equip_totals.equip1 = consumption_rate*time; 
if... 
} 
을 단순화하기 위해 내가 좋아하는 것보다는 긴 기능을 사용하여 ... 구조체라는 equip_totals과 회원, equip1 등의 사용 비율이

아이디어가 있으면 알려 주시면 감사하겠습니다.

답변

1

것은 배열 equip_totals를 교체하고 다음 루프

void update_equip_status(char *equip_status) { 
    for (int i = 0; equip_status; i++) { 
     if (equip_status & 1) 
      equip_totals[i] = consumption_rate*time; 
     equip_status >>= 1; 
    } 
} 
+0

제안을 주셔서 감사합니다 – Programmer

+0

당신이 대답을 upvote 또는 더 나은 능력을 가질 때 감사하는 이유 - 그것을 받아 들일 수 –

+0

나는 대답을 수락합니다! – Programmer

2

간단한 배열을 사용 또한 unsigned int equip_totals[8];

, 단순히 값으로 equip_status를 전달하는 데 더 좋을 것이다.

for(int i=0; equip_status != 0; i++, equip_status /= 2) 
    if (equip_status & 1) 
     equip_totals[i] = consumption_rate*time; 
+0

나는 그것에 대해 생각하지만, 문제가되지 이잖아 한을 사용합니다. 모든 조합에 대한 업데이트를 작성하는 대신에 equip_status ..로 한 번에 업데이트하려고합니다 .. – Programmer

+0

... 그리고 업데이트 기능에서'for' 루프. – Nemo