如何在C中通过索引对齐两个整数数组?

时间:2012-11-16 23:40:26

标签: c arrays math

我知道这个问题可能看起来不太清楚。

基本上我正在尝试编写一个显示基本算术计算的程序(当然是通过控制台),就像孩子们一样。

例如:

5,294
+ 0,706

= etc

所以我将这两个数字放在不同的数组中,按数字分割(所以int数组如:{5,2,9,4})。

我正在努力学习/弄清楚如果他们没有相同的位数,我会如何将两组数字对齐。例如,如果不是0,706我只有706?目前我会有两个阵列,一个像{5,2,9,4},另一个像这样:{7,0,6} - 我需要4个超过6个。

希望这对你们所有人都有意义!

提前致谢!

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

只需查找每个阵列的长度,找到最长的长度。然后为每个不具有该长度的数组创建新数组,并首先使用旧短数组的数字开始填充这些数组,然后对其余值填充零,直到达到索引0.我希望我做到了正确理解您的问题,以便根据我的提案回答您的问题。

如果没有涉及小数点,那当然只有效。如果涉及小数点,则必须找到左侧和右侧的最大位数,然后为不符合此条件的每个旧数组创建新数组,并执行与上述相同的操作。 / p>

编辑:更简单的方法,可以简单地通过颠倒每个数组的顺序,然后进行计算,但将数字带到右边(而不是左边)和结束了结果的顺序。

答案 2 :(得分:0)

您需要有关阵列中小数点的信息。否则你可以使用整数。我会将指数指向10的基数,并将其作为我的第一个或最后一个条目。完成此操作后,您可以使用它来相应地转换格式。

'0,706'将成为'{-3,7,0,6}',第一个数字是指数。然后你像这样对齐你的逗号

//0 -1 -2 -3
   ,  
   ,

然后只需输入您的号码

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

冲洗并重复。