映画のエンドロール観る派?観ない派?

配列の中に格納されている桁に応じて表示のしかたを変えたいのです。
最大で3桁の数字が入っていたら、3桁表示に、
最大で5桁の数字が入っていたら、5桁表示に、
つまり

int a[]={1,100,1,1};
の時は
printf("%3.d ");
と表示し、

int a[]={1,100,1,10000};
の時は
printf("%5.d ");
と表示するように、桁数に応じて%x.dのxの部分を変更したいんです。

どうしたらいいでしょうか。

A 回答 (4件)

printf("%*.d",x,n);


で桁数をx桁と変数で指定できるので(参考URLの3-7参照)、あとは何らかの方法で配列から最大値を取り出して(そこは難しくないので考えてください)、その桁数を(int)log10()などとして取得すればいいのではないでしょうか。

参考URL:http://c-production.com/contents/c/sec03.html
    • good
    • 0

printf("%#d");



で上手くいきません?
%#xとかやると16進でうまいこといくんですが、dだとどうかは
わかりません。やってみてください。
    • good
    • 0
この回答へのお礼

#1~#4様、ありがとうございました!
printf("%*.d",x,n);でうまくいきました!
また、ログを使うことで桁数計算できるんですね!
ありがとうございました。

お礼日時:2006/10/14 01:22


回答しましたが
これ本来変える必要有るのですか?
プリントユージングを指定すればいいのでは?
    • good
    • 0

数学的に処理するなら


・10の自然定数を底にしたログを計算し出来るだけ精度の良い小数値の形で定数として登録する
・桁数の知りたい値も同様に計算し精度の良い変数に格納する
・後者を前者で割る
この商の整数部がこの場合の桁数に当たります

因みに最初の定数の10を2に変えると2進で何桁かに
8に変えると8進で何桁かに
Nに変えるとN進で何桁かに変わります
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!