无法让我的程序在C ++中从in_stream读取文件

时间:2015-11-20 17:15:24

标签: c++

#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上编译这个,当我添加一个新文件来获取信息时,无论我放在文件中的值是什么,它只给我零或奇怪的数字与余数。会很感激一些指导!谢谢!

2 个答案:

答案 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;
}

顺便说一下:你不能像你想做的那样将数组传递给函数。