0

テキスト ファイルに書き込み、テキスト ファイルから読み取って、配列内の項目の平均スコアを取得しようとしています。これが私のコードです:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
float total =0;;

ofstream out_file;
out_file.open("number.txt");

const int size = 5;
double num_array[] = {1,2,3,4,5}; 

for (int count = 0; count < size; count++)
{
    if (num_array[count] == 0)
    {
        cout << "0 digit detected. " << endl;
        system("PAUSE");
    }
}
double* a = num_array;
out_file << &a;

out_file.close();

ifstream in_file;
in_file.open("number.txt");
if(in_file.fail())
{
    cout << "File opening error" << endl;
}else{
    for (int count =0; count< size; count++){
        total += *a;  // Access the element a currently points to
        *a++;  // Move the pointer by one position forward
    }
}

cout << total/size << endl;

system("PAUSE");
return 0;
}

ただし、このプログラムはファイルから読み取ることなく単純に実行され、正しい平均スコアが返されます。そして、これは私のテキストファイルで得られるものです:

0035FDE8

配列全体をテキスト ファイルに書き込む必要があると思い、そこから要素を取得して平均を計算しますか?

編集部分

ポインターの for ループを使用して、テキスト ファイル部分への書き込みを修正しました。

for(int count = 0; count < size; count ++){
    out_file << *a++ << " " ;
}

しかし今、私はファイルを読み取って平均を計算できないという別の問題を抱えています。誰でも修正方法を知っていますか?

4

2 に答える 2

2

配列自体ではなく、配列へのポインタのアドレスをファイルに書き込んでいます。

out_file << &a;

したがって0035FDE8、アドレスであるファイルを取得します。

out_file<<num_array[count]inforループを使用して、各値をファイルに書き込むことができます。for同様のループを使用して読み取ることもできます。

于 2013-05-15T13:44:35.330 に答える
1

このようなものを試すことができます

double total =0;

    std::ofstream out_file;
    out_file.open("number.txt");

    const int size = 5;
    double num_array[] = {1,2,3,4,5}; 

    for (int count = 0; count < size; count++)
    {
        if (num_array[count] == 0)
        {
            std::cout << "0 digit detected. " << std::endl;
            system("PAUSE");
        }
        else
        {
            out_file<< num_array[count]<<" ";    
        }
    }
    out_file<<std::endl;
    out_file.close();
    std::ifstream in_file;
    in_file.open("number.txt");
    double a;
    if(in_file.fail())
    {
        std::cout << "File opening error" << std::endl;
    }
    else
    {
        for (int count =0; count< size; count++)
        {
            in_file >> a;
            total += a;  // Access the element a currently points to
        }
    }

        std::cout << total/size << std::endl;
于 2013-05-15T14:05:10.680 に答える