我需要解决下面的问题,我需要将最终结果打印为float
,
但是此代码将输出作为int
值。
#include <iostream>
using namespace std;
int main()
{
int T;
cin>>T;
for(int i=0; i<T; i++)
{
int N;
cin>>N;
int A[N],B[N];
float K=0;
for(int j=0; j<N; j++)
cin>>A[i];
for(int j=0; j<N; j++)
cin>>B[i];
for(int j=0; j<N; j++)
K=(B[i]/A[i]) + K ;
cout<<K<<endl;
}
return 0;
}
输入: 1 2 4 2 10 6
输出:
6
期望的输出:
5.500000
答案 0 :(得分:2)
使用一些C ++ 14技巧,您可以将计算简化为:
float K = std::inner_product(begin(B), end(B), begin(A), 0.0f, std::plus<float>{}, std::divides<float>{});
另请注意,动态数组是GCC扩展,因此以下代码不可移植:
int N;
cin>>N;
int A[N],B[N];
我们可以使用简单的vector
代替(我在上面的代码段中使用它):
vector<int> A, B;
int tmp;
for(int j=0; j<N; j++){
cin >> tmp;
A.push_back(tmp);
}
for(int j=0; j<N; j++){
cin >> tmp;
B.push_back(tmp);
}
std::inner_product
主要用于......好吧,计算两个集合的内积(成对乘法的总和)。但是,它会对&#34; sum&#34;进行参数化。方面和&#34;产品&#34;方面,所以我们可以分发&#34;产品&#34;为了&#34;分裂&#34;。 C ++ 14 std::divides
和std::plus
函数对象使我们更容易指定我们想要的操作(否则我们可以为C ++ 11编写一个lambda)。
答案 1 :(得分:0)
您需要将计算值中的一个输入为<DotNetCliToolReference>
,结果为(float)
值:
float