Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将一些数字合并为一,例如1,7,3=173?_C++_C_For Loop_Math - Fatal编程技术网

C++ 如何将一些数字合并为一,例如1,7,3=173?

C++ 如何将一些数字合并为一,例如1,7,3=173?,c++,c,for-loop,math,C++,C,For Loop,Math,我已经思考了几个小时如何做到这一点 例如,让我们给出一个长度不定的数组Arr[]={1,2,3,4} (不确定,因为它可以有任何其他数量的元素) 显而易见,从数学上来说,最好的方法可能是将第一个元素*1000,+第二个元素*100,+第三个元素*10,+第四个元素相乘 这样的结果就是:1000+200+30+4=1234。 理论非常简单,但如何在“for”循环中实现这一点,因为它可以有任何其他数量的元素,例如,假设它可以有7个元素,而操作现在需要“第七个元素*100000”?我已经考虑了一段时间

我已经思考了几个小时如何做到这一点

例如,让我们给出一个长度不定的数组Arr[]={1,2,3,4}

(不确定,因为它可以有任何其他数量的元素)

显而易见,从数学上来说,最好的方法可能是将第一个元素*1000,+第二个元素*100,+第三个元素*10,+第四个元素相乘

这样的结果就是:1000+200+30+4=1234。

理论非常简单,但如何在“for”循环中实现这一点,因为它可以有任何其他数量的元素,例如,假设它可以有7个元素,而操作现在需要“第七个元素*100000”?我已经考虑了一段时间了,我想不出一种方法可以把它写在“for”上,这样就可以在同一个循环中实现。你们有没有建议我怎么做


谢谢

假设所有整数都是以10为基数的一位数:

int result = 0;
for (int i = 0; i < len; ++i) {
    result = result*10 + arr[i];
}
int结果=0;
对于(int i=0;i
int size=sizeof(Arr)/sizeof(*Arr),p=1,number=0;
对于(int i=size-1;i>=0;i--)
{
数字=数字+a[i]*p;
p*=10;
}

cout让编译器为您计算数组大小:

模板
整数计算(T(&arr)[大小]){
int结果=0;
对于(大小i=0;i

想想十的幂。四个元素:
Arr[0]*10^3+Arr[1]*10^2+Arr[2]*10^1+Arr[3]*10^0
。看到模式了吗?这可以扩展到不同数量的元素。这里有一个更好的模式:1234=123*10+4。此外,123=12*10+3。此外,12=1*10+2。这是一种效率较低的方法,但我只需将每个元素转换为字符串,将其串联,然后将其转换回数字。只要几个STL电话,我就完了。更容易用C++ 17和<代码> togARS 和<代码> Fuffy-CARS 。请选择一个关于“代码”INTHORKSIZE= SIZEOF(ARR)/SiZeOf(* Arr)< /> >的语言注释:如果您将数组传递到函数中,在现代C++中,这是行不通的。User4581301a也值得注意:C++17添加了一个函数模板来获取数组的范围:
template constepr std::size\u t size(const t(&array)[N])noexcept
int size = sizeof(Arr) / sizeof(*Arr), p = 1, number = 0;

for(int i = size - 1; i >= 0; i--)
{
    number = number + a[i] * p;
    p *= 10;
}
cout << number;