因此,我的任务是使用指针编写具有可变数量的参数的函数“ mult”。并且此函数必须计算浮点数的乘积。
我遵循了我们大学给我们的指导,但是我的乘积仍然等于零。我发现问题在于要相乘的其他所有数字均为零。
#include <iostream>
using namespace std;
int mult(int k,...){
int* p = &k;
int m = 1;
for(; k != 0; k--){
m *= *(++p);
}
return m;
}
int main(){
float res1 = mult(11,45,10,9,8,7,6,5,4,3,2,2);
float res2 = mult(7,12,23,0.3,0.6,1,2);
float res3 = mult(3,0.6,-12,-0.9);
cout << "Your results are:\n"
<<res1<<"\n"
<<res2<<"\n"
<<res3<<"\n";
return 0;
}
以下是指南中的示例:
void Print_stor(int k, ...)
{
int n=k;
int a[n];
int *p = &k;
for ( ; k!=0;k--)
a[k-1]=*(++p);
for(int i=n-1; i>=0; i--)
printf("%i ", a[i]);
printf("\n");
}
int sum(int k, …)
{
int *p = &k;
int s=0;
for ( ; k!=0; k--)
s+=*(++p);
return s;
您可以将其编写mult
为可变参数函数,并使用std::accumulate
withstd::multiplies
作为运算符。
#include <functional>
#include <initializer_list>
#include <iostream>
#include <numeric>
template<typename T, typename... Args>
T mult(T t, Args... args)
{
std::initializer_list<T> values{args...};
return std::accumulate(values.begin(), values.end(), t, std::multiplies<T>());
}
int main()
{
std::cout << mult<float>(11,45,10,9,8,7,6,5,4,3,2,2);
return 0;
}
输出量
3.59251e+09
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句