数组和I / O文件的问题

时间:2013-09-19 20:23:52

标签: c++ arrays file-io

这是我遇到麻烦的作业。我的作业代码如下。我不知道为什么我不读取txt文件中的数据。任何人都可以看看作业和我的代码并指出我正确的方向吗?

分配

服务电话公司报告

OK-Service Handlers Company处理来自客户的每日服务电话,电话。该公司通过电话处理民间问题。权力需要对给定月份的呼叫进行总结。

收集的数据是每天进入的服务调用,并记录在名为SericeCalls.txt的文件中。我将把文件放在分配下的Blackboard上。

数据表示所进行的服务呼叫类型以及服务呼叫持续的分钟数。该公司处理几种不同类型的呼叫,并且每天对于给定日期的给定呼叫将存在若干不同的条目。输入将是每行两个数字,其中第一个数字是服务呼叫的类型,第二个是呼叫持续的分钟数。每个输入行是一个服务调用的记录。提供了25种不同类型的服务,编号为1到25。          例如:     3 30服务3号,持续30分钟。     21 45服务号码21持续45分钟。     6 28服务号码6持续28分钟。     等。

该公司最多可以处理25种不同的服务。输入文件是一个月的数据 您将计算每种类型的服务句柄的服务呼叫数以及呼叫所花费的分钟数。

  • 报告中应包含以下信息。
  • 报告应有标题和标题。
  • 呈现的每种服务类型的输出
  • 该月的服务呼叫句柄总数
  • 在此类服务电话上花费的总分钟数,
  • 公司处理的服务电话总数
  • 每种服务类型处理的平均分钟数,
  • 本月服务电话的总体平均值。
  • 我还需要知道是否使用了哪些服务呼叫类型。
  • 还告诉我哪个服务电话花了最多的时间来处理。
  • 标记所有输出并使其成为可读的报告,表格格式。
  • 您必须使用数组,传递数组并使用函数。

代码

#include "stdafx.h"
#include<iostream>
#include<fstream>

using namespace std;

const int ROWS= 25;
const int COLS = 2;
double input;

ofstream OutFile;

//function prototype
void ReadFile(int[ROWS][2]);
void printArray(int[ROWS][2]);


int main()
{
    int ary[ROWS][2];
    //open-creates file to print to
    OutFile.open ("ServiceCallOutFile.txt");
    // Title and Heading
    OutFile << "\nMy\n";
    OutFile << "\nMonthly Service Call Report \n";
    OutFile << "Service call report generated for September 2013\n\n";
    cout << "\nMy \n";
    cout << "\nMonthly Service Call Report \n";
    cout << "Service call reprot generated for Oct. \n\n";

    // Call Function 1
    ReadFile(ary);

    // Call Function 2
    printArray(ary);
    OutFile<<"\n-----------------------------"<<endl;
    cout<<"\n-----------------------------"<<endl;

    //closes .txt file
    OutFile.close();
    cin.get();
    cin.get();
    return 0;
}

// 1)  Open and ReadFile .txt file for array
void ReadFile(int ary[ROWS][2])
{
    ifstream infile("ServiceCalls.txt");
    for(ROWS;ROWS<25;ROWS+1)
    {
        cout<<ary[ROWS][COLS];
        for (COLS;ROWS<2;COLS+1)
        {
            infile>>ary[ROWS][COLS];
        }
    }
    infile.close();
}

// 2)  Print out all the values in the array with no more than 10 numbers per output line.
void printArray(int ary[ROWS][2])
{
    OutFile<< "The numbers in the array are: \n";
    cout<< "The numbers in the array are: \n";
    for(ROWS;ROWS<25;ROWS+1)
    {
        cout<<ary[ROWS][COLS];
        for (COLS;ROWS<2;COLS+1)
        {
            OutFile<<ary[ROWS][COLS]<<" "" ";
            OutFile<<endl;
            cout<<ary[ROWS][COLS]<<" "" ";
            cout<<endl;
        }
    }

}

从我的.txt文件中输入数字。

17 47
10 43
20 30
4 34
15 22
21 20
3 48
17 38
18 37
12 12
5 5
4 14
8 35
17 29
21 46
2 17

1 个答案:

答案 0 :(得分:0)

你需要在循环中改变一些东西来实际执行它。您刚刚使用了边界所需的常量,并且对常量值进行了编码,这是一个坏主意。 for - 循环的一般形式是

for (initialization; condition; advance)

initialization可能涉及值的定义。例如,要迭代值0到9,可以使用循环

int const boundary(10);
for (int i(0); i != boundary; ++i) {
    ...
}

此外,您的代码没有检查您的流是否处于良好状态:您应该始终检查是否实际上已从流中成功读取了值。例如:

if (file >> value) {
    use(value);
}
else {
    std::cout << "ERROR: failed to read a value from the file\n";
}