2011-07-28 9 views
0

私はCでプロセスを記録しようとしていますが、もっと簡単な解決法が必要です。いくつかの項目から値を計算する

私はステータスバイトを持っており、各ビットは特定の機器がオンかどうかを示します。各機器は一定の電力消費率を持っており、そのON/OFF状態に基づいて電力使用量を記録したいと考えています。

だから、私は構造体が

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

... equip1、メンバーとしてequip_totalsと使用率と呼ばれているし、更新するため、私は

void update_equip_status(char *equip_status) 
{ 
if (&equip_staus = 0x01) 
equip_totals.equip1 = consumption_rate*time; 
if... 
} 
を簡素化したいと思いますかなり長い関数を使用します

ご意見がありましたら、感謝します。

答えて

1

配列でequip_totalsを交換し、私はそれについて考えたが、問題はないthatsのいる次のループ

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

回答をアップアップするか、それ以上に能力がある場合に感謝してください - それを受け入れるために –

+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..witheadを使ってワンショットを更新したいと思います。 – Programmer

+0

...更新機能の 'for'ループ。 – Nemo

関連する問題