gpt4 book ai didi

c++ - 如何使用指针编写具有可变数量的参数的函数?

转载 作者:行者123 更新时间:2023-12-03 07:08:43 25 4
gpt4 key购买 nike

因此,我的任务是使用指针编写具有可变数量的参数的函数“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::accumulatestd::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

关于c++ - 如何使用指针编写具有可变数量的参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64803552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com