#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
const int NUMBER = 20;
void dataRead(double a[], int size, double& data);
double averageArray(const double a[], double data);
double totalArray(const double a[], double data);
double highCost(const double a[], double data);
double lowCost(const double a[], double data);
int main()
{
// Calling in the file
ifstream in;
char in_file[16];
double data;
double averageSales, higherSale, lowerSale, totalSales, salesData[NUMBER];
cout << "Enter the input file name." << endl;
cin >> in_file;
in.open(in_file);
// Incase the file doesnt open
if(in.fail())
{
cout << "File not found." << endl;
exit(1);
}
// For calling the answers from the formula functions
totalSales = totalArray(salesData, data);
cout << endl << "The total sales are $" << totalSales << endl;
averageSales = averageArray(salesData, data);
cout << "The average sales amount is $" << averageSales << endl;
higherSale = highCost(salesData, data);
cout << "The highest sales amount is $" << higherSale << endl;
lowerSale = lowCost(salesData, data);
cout << "The lowest sales amount is $" << lowerSale << endl;
return 0;
}
// Formula functions used for values
double totalArray(const double sales[], double n)
{
double sum = 0;
for(int count = 0; count < n; count++)
sum += sales[count];
return(sum);
}
double averageArray(const double sales[], double n)
{
return((double)totalArray(sales, n));
}
double highCost(const double sales[], double n)
{
double highest;
highest = sales[0];
for(int count = 1; count < n; count++)
if(highest < sales[count])
highest = sales[count];
return(highest);
}
double lowCost(const double sales[], double n)
{
double lowest;
lowest = sales[0];
for(int count = 1; count < n; count++)
if(lowest > sales[count])
lowest = sales[count];
return(lowest);
}
void readData(int a[], int size, double& data)
{
}
我无法让我的程序读取文件并计算答案数据。它应该接收一个文件并返回与文件中的内容有关的特定值。与平均值,最高成本值,最低成本值和总价值一样。我正在c9.io上编译这个,当我添加一个新文件来获取信息时,无论我放在文件中的值是什么,它只给我零或奇怪的数字与余数。会很感激一些指导!谢谢!
答案 0 :(得分:0)
你打开文件,但从不读取任何内容(也不关闭它)。您以与in
相同的方式阅读in
,并说明如何关闭:How to close IStream?。
答案 1 :(得分:0)
我没有看到实际读取文件中数据的行,您只是打开它。
如何阅读文件内容
如果你的文件中只包含简单的数字和空格,例如&#34; 69 10 38 33(...)&#34;,你会想要像这样阅读它们:
int number;
file>>number;
cout<<number<<endl;
file>>number;
cout<<number<<endl;
- 示例程序将输出以下内容:
69
10
当您的文件被写成更多&#34;人类可读&#34;,如:
Value1 - 69
Value2 - 10
etc.
它变得棘手。我建议只将文件更改为&#34; 69 10 ......&#34;格式。如果你真的想保持这样,你可以将值读取到一个字符串 - 就像你对数字一样 - 并检查它是否是数字。如果是,请使用stringstream将其转换为int。这两个功能可以帮助你
#include <sstream>
int StringToInt(string input)
{
int res;
stringstream ss(input);
ss>>res;
return res;
}
bool IsNumeric(string input)
{
for(int i=0; i<input.size(); i++)
{
if(input[i] < '0' && input[i] > '9')
return false;
}
return true;
}
顺便说一下:你不能像你想做的那样将数组传递给函数。