2016-09-25 13 views
0

私はC++に少し新しく、映画のチケットの総額を計算するためにこの小さなプログラムを作っています。なぜ私はゼロを受け取っていますか?

#include<iostream> 
#include<string> 
#include<iomanip> 
#include<cmath> 

using namespace std; 

int adultTick, childTick; 
const int aPrice = 14; 
const int cPrice = 10; 
float rate() { 
    const double RATE = .20; 
    return RATE; 
} 

double grossTotal = (aPrice * adultTick) + (cPrice * childTick); 
int main() { 

    cout << "Box Office Earnings Calculator ....\n" << endl; 
    cout << "Please Enter the Name of the Movie: "; 
    string movie_name; 

    getline(cin, movie_name); 


    cout << endl << " \" \" " << "adult tickets sold: "; 
    cin >> adultTick; 

    cout << " \" \" " << "child tickets sold: "; 
    cin >> childTick; 

    cout << endl << setw(10) << left << "Movie Title: " << setw(20) << right << " \" " << movie_name << " \" " << endl; 
    cout << setw(10) << left << "Adult Tickets Sold: " << setw(20) << right << adultTick << endl; 
    cout << setw(10) << left << "Child Tickets Sold: " << setw(20) << right << childTick << endl; 
    cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal; 


} 

最後に、プログラムが合計を表示する場所がありますか?私は算術が正しいと思ったが、私は理解していないなぜそれは連続的にゼロを表示するのですか?私は何が間違っていますか? 算術 "grossTotal"の変数を作成しない場合は機能しますが、さらに "setprecision"と "fixed"関数を使用して書式を設定する必要があります。

答えて

2

mainのコードはgrossTotalに変更されません。

宣言

double grossTotal = (aPrice * adultTick) + (cPrice * childTick); 

&hellip。指定された初期値を持つ変数grossTotalを作成します。これらの変数の値の間には関係はありません。

名前空間スコープ変数としてゼロ初期化されているため、adultTickchildTickのイニシャライザの式が(=の右に)評価された時点でゼロになります。

+0

わかりませんが、主な点は、宣言では関係が指定されていないことです。初期値のみが指定されています。 –

1
int adultTick, childTick; 

示されたコードはこれらの変数をグローバルスコープで宣言し、これらの変数はゼロで初期化されます。

double grossTotal = (aPrice * adultTick) + (cPrice * childTick); 

を示すコードは、グローバルスコープでこの変数を宣言し、計算式が0に計算するので、この変数は0

cout << setw(10) << left << "Gross Box Office Profit: " << setw(20) << right << "$ " << grossTotal; 

に設定され、main()ディスプレイでこのラインもちろん、あるgrossTotal変数の値は、0

それが真であることを、このラインの前に、main()セットadultTickchildTickに上記のコード。どちらも違いはありません。grossTotalの値は既に初期化されています。

他の変数が設定された後にの値がmain()で計算されるようにコードを変更する必要があります。

関連する問題