3

私のプログラムは、.txt ファイルを入力 (1 ~ 10 秒の時間) として使用して、落下物体の距離を計算することになっています。テキスト ファイルは次のようになります。

1 2 3 4 5 6 7 8 9 10

これまでのコードは次のとおりです。

#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;

//function prototype
double fallingDistance (int);

void main()
{
    ifstream inputFile;
    int time;
    double distance;

    //open the file
    inputFile.open("05.txt");
    inputFile >> time;

    {
        distance = fallingDistance (time);
        cout << time << "\t\t" << distance << endl;
    }
}
double fallingDistance (int time)
{
    double distance, gravity=9.8;
    distance = static_cast<double>(0.5 * gravity * pow(time,2));
    return distance;
}

そして、これは私のプログラムがコンパイルするものです:

1 4.9 press any key to continue...

前もって感謝します!

4

1 に答える 1

3
cout << time << "\t\t" << distance << endl;

intまず、入力ファイルからを読み取ります。次に、をdistance使用して初期化しtimeます。次にtime、2つのタブの値を出力し、最後に。の値を出力しdistanceます。

この行が実行された後、mainreturnsとプログラムが終了します。なぜあなたはそれが他のものを印刷することを期待するのですか?

ファイルからより多くの値を取得する必要がある場合は、ループを使用する必要があります。このループは、プロセス全体をループでラップし、ファイルからすべてを読み取るまで読み取ります。何かのようなもの:

inputFile.open("05.txt");
int time;
while(inputFile >> time) {     
    distance = fallingDistance (time);
    cout << time << "\t\t" << distance << endl;
}

ちなみに、mainは、標準ではint、ではなく、のリターンタイプを持つように定義されていvoidます。行ったように引数(int argcおよびchar *argv[])を省略しても問題ありません。

于 2012-11-13T23:53:17.040 に答える