当我们C++将两个数组的整数除以 时,如何获得浮点数计算;
How to get calculation in float when we divide the two array's integers in C++;
我需要解决下面的一个问题,我需要将最终结果打印为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
通过一些 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
主要用于...好吧,计算两个集合的内积(成对乘法的总和(。但是,它同时参数化了"总和"方面和"产品"方面,因此我们可以将"产品"换成"除法"。C++14std::divides
和std::plus
函数对象使我们更容易指定所需的操作(否则我们可以为 C++11 编写 lambda(。
您需要将计算值之一类型转换为(float)
,以使结果成为float
值:
#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[j];
for(int j = 0; j < N; j++)
cin >> B[j];
for(int j = 0; j < N; j++)
K += (float)B[j] / A[j];
cout << K << endl;
}
return 0;
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 正在查找文档以获得PS4平台的C++中的设备信息
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- 欧拉项目#8答案是大以获得有效答案
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 当我们C++将两个数组的整数除以 时,如何获得浮点数计算;
- C 在我的计算机上工作正常,但在Leetcode上获得地址消毒器堆越流行错误
- 计算从德劳内三角测量获得的三角形的边长
- 如何从用户那里获得输入字符串而不是示例,然后计算空格、标点符号、数字和字母.C++
- 如何获得OpenGL在给定高度级别之间计算的值
- 获得奖金来计算
- 从看似相同的计算中获得不同的输出
- 我如何获得我的程序来计算最低分数的平均下降
- 计算C++堆栈需求;如何获得可读的交易品种表
- 计算并获得小数点后的最高位数
- 如何插值从Kinect计算的3D点来获得一个球的轨迹
- 使用mktime计算时间不正确,以获得UTC+8
- 获得错误C2064:术语不计算为具有2个参数的函数