C言語で書いた以下のプログラムをもっと簡潔にしたいのですが、いい方法はないでしょうか? iが0の時はdataには0が代入され、1以降は99、999、9999、99999が代入されます。
C言語で書いた以下のプログラムをもっと簡潔にしたいのですが、いい方法はないでしょうか? iが0の時はdataには0が代入され、1以降は99、999、9999、99999が代入されます。 if文をやめて簡潔にしたいです。 int data[6] = {0}; for(int i = 0; i < 6; i++) { if(i == 0) { data[0] = 0; } else if(i == 1) { data[1] = 9; } else if(i == 2) { data[2] = 99; } else if(i == 3) { data[3] = 999; } else if(i == 4) { data[4] = 9999; } else if(i == 5) { data[5] = 99999; } }
ベストアンサー
#include <stdio.h> #define ___ #define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a))) int main(void) { ___ int data[6]; ___ for (size_t i = 0, n = 1; i < ARRAY_SIZE(data); ++i, n *= 10) ___ { ___ ___ data[i] = n - 1; ___ } ___ for (size_t i = 0; i < ARRAY_SIZE(data); ++i){ ___ ___ printf("data[%zu] = %d\n", i, data[i]); ___ } ___ return 0; }
質問者からのお礼コメント
1番的を射ていたumi********さんをベストアンサーに選ばさせてもらいました。 テーブルを使ってのやり方もありですね。 ありがとうございました。
お礼日時:5/17 10:33