0

質問があまり明確に思えないかもしれません。

基本的に、私は基本的な算術計算を (もちろんコンソール経由で) 子供がするのと同じ方法で表示するプログラムをコーディングしようとしています。

例えば:

   5,294
+ 0,706

= など

したがって、数字ごとに分割された別々の配列に両方の数値があります (つまり、{5,2,9,4} のような int 配列)。

私が学ぼうとしている/理解しようとしているのは、桁数が同じでない場合に、両方の桁のセットを右に揃える方法です。たとえば、0,706 ではなく 706 だったらどうでしょうか。現在、{5,2,9,4} のような配列と {7,0,6} のような配列の 2 つの配列があります。4 が 6 を超える必要があります。

うまくいけば、それはあなた全員にとって理にかなっています!

前もって感謝します!

4

3 に答える 3

1

このコードスニペットは、探している種類の出力を生成する可能性があると思います。通常の整数で機能するため、配列をいじくり回す必要はありません。

char tmpstr[1];
int total = first + second;
int width = snprintf(tmpstr, 1, "%d", total);
printf("  %*d\n", width, first);
printf("+ %*d\n", width, second);
printf("  %.*s\n", width, "-----------");
printf("= %*d\n", width, total);
于 2012-11-17T00:14:44.943 に答える
0

すべての単一配列の長さを探して、最長の長さを見つけるだけです。次に、その長さを持たないすべての配列に対して新しい配列を作成し、最初に古い短い配列の番号でこれらの配列を埋め始め、次に残りの値については、インデックス0に達するまでゼロで埋め始めます。私の提案であなたの質問に答えるためにあなたの質問を正しく理解してください。

もちろん、これは小数点が含まれていない場合にのみ有効です。小数点が含まれている場合は、その左側と右側の最大桁数を見つけてから、この基準を満たさない古い配列ごとに新しい配列を作成し、上記と同じことを行う必要があります。

編集:それを行うさらに簡単な方法は、すべての配列の順序を逆にしてから計算を行うことですが、数値を右(左ではなく)に運び、最終的に結果の順序を逆にすることです。

于 2012-11-16T23:48:03.457 に答える
0

配列内の小数点に関する情報が必要です。それ以外の場合は、整数を使用できます。指数を10の底に取り、それを最初または最後のエントリにします。これを入手したら、それに応じてフォーマットをシフトするために使用できます。

「0,706」は「{-3,7、0、6}」になり、最初の数値は指数になります。次に、このようにカンマを揃えます

//0 -1 -2 -3
   ,  
   ,

番号を入力するだけです

//0 -1 -2 -3
  0, 7  0  6
   ,

すすぎ、繰り返します。

于 2012-11-16T23:48:46.670 に答える