尝试在数组(C )中找到平均值时,获取-NAN(IND)输出
Getting a -nan(ind) output when trying to find averages within an array (c++)
我试图在数组中获得一组数字的平均值,并且我将-nan(ind)作为我的输出。我不确定导致这个问题的原因。这是我到目前为止在C 中写的代码:
#include "pch.h"
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
void input_from_file(ifstream & inFile, char * item, char * name, double & price, double & cost, double & material_cost);
double array_price[50], array_total_cost[50];
double price, base_cost, material_cost;
int cnt = 0, i;
double calAverage(double arr[], int s);
char item[2]{ "" };
char name[21];
double total_cost = base_cost + material_cost;
double profit = price - total_cost;
void File_Input(ifstream & Main_File)
{
do {
string File_Name;
cout << "Please enter the file name including extension: ";
cin >> File_Name;
Main_File.open(File_Name);
} while (!Main_File);
}
void File_Read(ifstream & The_File)
{
cout << setw(29) << left << "Name" << right << setw(10) << "Price" << setw(10) << "Cost" << setw(10) << "Profit" << "n" << endl;
string Typed_File;
int increment = { 0 };
while (!The_File.eof())
{
input_from_file(The_File, item, name, price, base_cost, material_cost);
total_cost = base_cost + total_cost;
profit = price - total_cost;
array_total_cost[increment] = total_cost;
array_price[increment] = price;
increment++;
cout << setw(29) << left << name << right << setw(10) << price << setw(10) << total_cost << setw(10) << profit << endl;
};
cout << "nnThe average price is " << calAverage(array_price, cnt);
cout << "nThe average cost is " << calAverage(array_total_cost, cnt) << " n";
}
void input_from_file(ifstream & inFile, char * item, char * name, double & price, double & base_cost, double & material_cost)
{
inFile >> item;
inFile >> name;
inFile >> price;
inFile >> base_cost;
inFile >> material_cost;
array_price[cnt] = price;
array_total_cost[cnt] = base_cost + material_cost;
}
double calAverage(double arr[], int s)
{
int i;
double sum = 0;
for (i = 0; i < s; i++)
{
sum += arr[i];
}
return (sum/(double)(s));
}
int main()
{
ifstream The_File;
File_Input(The_File);
File_Read(The_File);
}
这是我试图从以下内容中读取的文件:
food2.txtD Whitewine 3.5 0.75 0.0
f courgetts 751.88 125.31 75.19
f broccoliauroquefort 860.63 227.81 111.38
D Redwine 357.88 76.69 0.0
f coqauvin 774.38 129.06 77.44
f GratIndepates 886.13 234.56 114.68
f gnocchiauxlegumes 368.38 78.94 55.23
f raviole 796.88 132.81 79.69
f patesfraichesaunoix 911.63 241.31 117.98
d牛奶378.88 81.19 0.0
f rizaucumin 819.38 136.56 81.94
f gratinepolenta 937.13 248.06 121.28
D咖啡389.38 83.44 0.0
f事物毒剂841.88 140.31 84.19
f gateaudepommes 962.63 254.81 124.58
D茶3.00 .69 0.0
f souped'epeautre 864.38 144.06 86.44
f tartiflette 988.13 261.56 127.88
D WaterWithgas 4.38 5.23 0.0
f aligot 886.88 147.81 88.69
f abcdefghijklmnopqrst 999.99 268.31 131.18
这是我得到的完整输出:输出
任何帮助将不胜感激。谢谢
确保将cnt ++;
添加到wir循环中。如果可能的话,还要尝试远离全球变量。如前所述,这是eof
在段循环中不良的原因
不增加 cnt
的速度将其留下为零。这导致计算0.0 / 0
,即nan。
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 我无法获取以下代码的输出
- 从C++应用获取PowerShell脚本输出
- 我无法从 C# 获取 PInvoke 的输入参数以C++ DLL 以用作 IntPtr 的输出
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 使用提升过程获取 shell 命令的标准输出
- 从 exprTk 获取向量作为输出
- 如何使用 c++ libboost 运行进程并获取其输出?
- 从用户获取输入/输出
- 从 c++ 中的实例化进程获取输出的可靠方法是什么?
- 如何在C++中执行命令并获取命令的返回代码标准输出和标准
- TFLite 隔离错误,通过获取C++输入和输出
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 使用 qt 或 c++ 从桌面获取输入和输出
- 如何从amd gpus的显示输出中获取图像数据
- 获取使用p4api运行的Perforce命令的输出
- 获取C++输出流中元素的大小
- 如何从进程获取实时、非阻塞输出
- 异步输入和输出/获取前缀后的输入