0

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

任务

服务电话公司报告

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

收集的数据是每天进来的服务呼叫,并记录在名为 SericeCalls.txt 的文件中。我会将文件放在 Blackboard 上的 Assignments 下。

数据指示进行的服务呼叫的类型和服务呼叫持续的分钟数。该公司处理几种不同类型的电话,并且对于给定日期的给定电话,每天都会有几个不同的条目。输入将是每行两个数字,其中第一个数字是服务呼叫的类型,第二个是呼叫持续的分钟数。每个输入行是一个服务呼叫的记录。提供 25 种不同类型的服务,编号从 1 到 25。例如:3 30 服务编号 3,持续 30 分钟。21 45 服务号 21 持续了 45 分钟。6 28 服务号 6 持续了 28 分钟。ETC..

该公司可以处理多达 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
4

1 回答 1

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";
}
于 2013-09-19T20:35:43.977 回答