部门答案未正确执行
Division answer not executing properly
我在使用以下代码行时遇到问题:
double answer;
answer = num[count] / den[count]
cout << " Fraction" << count + 1 << " " << num[count]
<< " / " << den[count] << " = " << answer << endl;
为什么我的答案演绎不起作用?我忽略了什么吗?我正在使用数组并从单独的文本文件中获取数据。当我使用上面的代码时,我得到了要正确除法的数字,但答案不正确。它是一个随机数,通常是 0 或 1。
这是我的代码:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
using namespace std;
void read_data(int num[], int den[], int size);
void showValues(int num[],int den[], int size);
int main()
{
const int size1 = 12;
const int size2 = 12;
ifstream dataIn;
int num[12];
int den[12];
read_data(num,den,size1);
cout << "Here are the fractions: " << endl;
showValues(num,den,size1);
system("PAUSE");
return 0;
}
void read_data(int num[], int den[], int size)
{
ifstream dataIn;
dataIn.open("walrus.txt");
if( dataIn.fail() )
{
cout << "File does not exist." << endl;
exit(1);
}
int count;
for ( count = 0; count < size; count++ )
{
dataIn >> num[count];
}
for (count = 0; count < size; count++)
{
dataIn >> den[count];
}
dataIn.close();
}
void showValues(int num[],int den[], int size)
{
int count;
for (count = 0; count < size; count++)
{
if (den[count] == 0)
{
cout << " Fraction" << count + 1 << " "
<< num[count] << " /" << den[count]
<< " Is invalid" << endl;
}
else
{
double answer;
answer = num[count] / den[count];
cout << " Fraction" << count + 1 << " "
<< num[count] << " / " << den[count]
<< " = " << answer << endl;
}
}
}
@main ifstream dataIn;
您没有使用此对象
@function read_data :
int count;
for ( count = 0; count < size; count++ )
{
dataIn >> num[count];
}
for (count = 0; count < size; count++)
{
dataIn >> den[count];
}
假设您的文件如下所示:
1 2 23 32 44 // numerators
2 3 1 99 24 // den
正确的阅读方法是:
int count = 0;
while( count < size && dataIn >> num[count++] ) // numerators
;
count = 0;
while( count < size && dataIn >> den[count++] )
;
@function显示价值观:尝试更改
double answer;
answer = num[count] / den[count];
cout << " Fraction" << count + 1 << " "
<< num[count] << " / " << den[count]
<< " = " << answer << endl;
自:
double answer = static_cast<double>(num[count]) / den[count];
cout << " Fraction" << count + 1 << " "
<< num[count] << " / " << den[count] << " = " << answer << endl;
在 C 和 C++ 中,如果你这样做,
double answer = 10 / 3;
你的答案将是3。原因是您有 2 个整数,并且会发生整数除法。然后,生成的输出将隐式转换为双精度型。所以步骤是,
- 双选 = 10/3
- 双选题 = 3
- 双选 = 3.0
若要解决此问题,请告诉编译器希望将其视为浮点除法。
double answer = 10.0 / 3;
这通过以下方式工作,
- 双选题 = 10.0/3
- 双选题 = 10.0/3.0
- 双选 = 3.33333333...
编译器会将 3 隐式转换为更大的双精度类型 3.0。
因此,在您的代码中,您必须通过将至少一个除法参数转换为双精度数来将整数除法转换为浮点除法。
double foo = num[count] / den[count];
简单地变成
double foo = num[count] / static_cast<double>(den[count]);
或者,如果一个或两个数组都是双精度类型,则不会有需要强制转换的问题。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 欧拉项目#8答案是大以获得有效答案
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 首要问题的答案让值班员搞错了
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 部门答案未正确执行