0

良い一日、

dat ファイルを読み取るループがありますが、ループはデータを正しく読み取りません。私のdatファイルには次のデータが含まれています

46780976 3750.40
W 250.00
D 1200.00
W 75.00
W 375.00
D 1200.00
I 5.50
W 400.00
W 600.00
D 450.50
W 35.65

出力は

Account number: 46780976
Opening balance: R3750.40

Transaction    Amount    Balance Bank costs
Withdrawal     250.00    4000.00
Deposit       1200.00Ct  2800.00
Withdrawal        75.00  2725.00
Withdrawal      1375.00   1350.00
Deposit        1200.00Ct 1550.00
Interest         5.50    1555.50
Withdrawal      400.00   1155.50
Withdrawal      600.00   555.50     25.00
Deposit         450.00Ct 1005.50
Withdrawal       35.65    969.85
Banking costs    25.00    969.60

Closing balance: R969.60

私は次のことを得る

Account number : 46780976

Opening Balance : R 3750.4

Transaction        Amount          Balance         Bank Costs


Withdrawal            250            3500.4
Deposit            0 Ct            3500.4
Interest              0            3500.4

Withdrawal            250            3225.4
Deposit            1200 Ct            4425.4
Interest              0            4425.4

Withdrawal            75            4325.4
Deposit            1200 Ct            5525.4
Interest              0            5525.4

Withdrawal            375            5125.4
Deposit            1200 Ct            6325.4
Interest              0            6325.4

Withdrawal            375            5925.4
Deposit            1200 Ct            7125.4
Interest              0            7125.4

Withdrawal            375            6725.4
Deposit            1200 Ct            7925.4
Interest              5.5            7930.9

Withdrawal            400            7505.9
Deposit            1200 Ct            8705.9
Interest              5.5            8711.4

Withdrawal            600            8086.4
Deposit            1200 Ct            9286.4
Interest              5.5            9291.9

Withdrawal            600            8666.9
Deposit            450.5 Ct            9117.4
Interest              5.5            9122.9

Withdrawal            35.65            9062.25
Deposit            450.5 Ct            9512.75
Interest              5.5            9518.25

Withdrawal            35.65            9457.6
Deposit            450.5 Ct            9908.1
Interest              5.5            9913.6
Bank Costs           25            9888.6            25


Closing Balance : R 9888.6
Press any key to continue . . .

私のコード:

do { 
   in_stream >> letter;

if (letter == 'W')

    in_stream >> withdrawal;
    openBalance -= withdrawal;
    cout << "\nWithdrawal" << "            "<< withdrawal << "            " << openBalance << endl;
    out_stream << withdrawal;

if (letter == 'D')

    in_stream >> deposit;
    openBalance += deposit;
    cout << "Deposit" <<"            "<< deposit <<" Ct" <<"            " << openBalance << endl;
    out_stream << deposit;


if (letter == 'I')

    in_stream >> interest;
    openBalance += interest;
    cout << "Interest" <<"              "<< interest <<"            " << openBalance << endl;
    out_stream << interest;

 if (openBalance < 1000)
     cout << "Bank Costs" <<"           "<< bankCost <<"            " << openBalance <<"            " << bankCost << endl;
    openBalance -= bankCost;
    out_stream << bankCost;

} while(!in_stream.eof());

私を正しい方向に向けてください

ありがとう

4

2 に答える 2

2

最初の問題は、if ブロックに関するものです。C++ では、'if' ステートメントはすぐ後に続くもの (コード行または block.so...) に影響を与えます。

if( Xxx )
    thisHappensOnlyIfXxxIsTrue
thisAlwaysHappens

if( Xxx )
    thisHappensOnlyIfXxxIsTrue
    thisAlwaysHappens  // even though it's indented


if( Xxx ) {
    thisHappensOnlyIfXxxIsTrue
    thisDependsOnXxxToo
}
thisAlwaysHappens

次の問題は、ループが再開するたびに変数をクリアしていないことです。挿入する必要があります

do {
   deposit = 0;
   interest = 0;
   withdrawal = 0;

ループの最初 (または最後) で、最後のループ反復からの値を再利用しないようにします。

于 2013-02-17T01:55:41.027 に答える
1

最初の行は次のとおりです。

46780976 3750.40

この行は通過しますが、意図したものはありません:

in_stream >> letter;

letterもちろんそれがタイプであると仮定してchar

編集

// You need to read in the initial values here

do { 
   in_stream >> letter;

if (letter == 'W')
{
    in_stream >> withdrawal;
    openBalance -= withdrawal;
    cout << "\nWithdrawal" << "            "<< withdrawal << "            " << openBalance << endl;
    out_stream << withdrawal;
}

if (letter == 'D')
{
    in_stream >> deposit;
    openBalance += deposit;
    cout << "Deposit" <<"            "<< deposit <<" Ct" <<"            " << openBalance << endl;
    out_stream << deposit;
}

if (letter == 'I')
{

    in_stream >> interest;
    openBalance += interest;
    cout << "Interest" <<"              "<< interest <<"            " << openBalance << endl;
    out_stream << interest;
 }

 if (openBalance < 1000)
 {
     cout << "Bank Costs" <<"           "<< bankCost <<"            " << openBalance <<"            " << bankCost << endl;
    openBalance -= bankCost;
    out_stream << bankCost;
  }

} while(!in_stream.eof());
于 2013-02-17T01:53:31.323 に答える