0

これは私が問題を抱えている課題です。私が割り当て用に持っているコードは以下のとおりです。txtファイルからデータを読み取らない理由がわかりません。誰かが割り当てと私のコードを見て、正しい方向に向けることができますか?

割り当て

サービスコール会社レポート

OK-Service Handlers Company は、顧客からの毎日のサービス コール、電話を処理します。その会社は人々の問題を電話で処理します。権力者は、特定の月に行われた電話の要約を必要とします。

収集されるデータは毎日のサービス コールで、SericeCalls.txt という名前のファイルに記録されます。ファイルを課題の下の黒板に出します。

このデータは、行われたサービス コールのタイプと、サービス コールが続いた分数を示します。同社はいくつかの異なる種類の通話を処理しており、毎日、特定の日の特定の通話に対していくつかの異なるエントリがあります。入力は 1 行に 2 つの数値で、最初の数値はサービス コールのタイプで、2 番目の数値はコールが続いた分数です。各入力行は、1 つのサービス呼び出しのレコードです。提供されるサービスには 25 の異なるタイプがあり、1 から 25 までの番号が付けられています。たとえば、3 30 サービス番号 3 で 30 分間続きました。21 45 サービス番号 21 は 45 分続きました。6 28 サービス番号 6 は 28 分続きました。等..

同社は最大 25 種類のサービスを処理できます。入力ファイルは 1 か月分のデータです。
サービス ハンドルの種類ごとにサービス コールの数と、コールにかかった分数を数えます。

  • レポートには、次の情報が含まれている必要があります。
  • レポートにはタイトルと見出しが必要です。
  • レンダリングされたサービス呼び出しの各タイプの出力、
  • その月のそのサービス コール ハンドルの総数、
  • そのタイプのサービス コールに費やされた合計分数
  • 会社が処理するサービスコールの総数、
  • 各サービス タイプの処理に要した平均分数
  • その月にサービス コールにかかった全体の平均。
  • また、使用されなかったサービス コール タイプと、使用されなかったサービス コール タイプを知る必要もあります。
  • また、処理に最も時間がかかったサービス コールも教えてください。
  • すべての出力にラベルを付けて、読みやすい表形式のレポートにします。
  • 配列を使用し、配列を渡し、関数を使用する必要があります。

コード

#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 に答える