2016-09-22 1 views
2

私はC++を初めて使っています。このプログラムで何が間違っているのか分かりません。C++旅行したマイルとMPHを計算するプログラム

旅行の開始と終了のマイル数とそれにかかる時間を入力する必要があります。私は結果を数キロとキロメートルで印刷する必要があります。

私のテスト変数は 開始1230 終了している1240.5 時間0.12

結果は マイル10.5 マイル87.5 キロ16.9 キロ140.8

でなければなりません。しかし、それは私が得るものではありません。

// Lab 3 Exercise 2 
// Calculate MPH (miles Per Hour) and KPH (Kilometers Per Hour). 
// 
// Program by: Mohamed El-Malah 

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 

    // Have the user enter his start and end mileage 
    double start_mileage, end_mileage; 

    cout << "Enter your starting mileage: "; 
    cin >> start_mileage; 

    cout << "Enter your end mileage: "; 
    cin >> end_mileage; 

    double trip_mileage = end_mileage - start_mileage; 

    // Have user input the hours the trip took 
    double total_hours, mph; 


    cout << "How man hours was the trip: "; 
    cin >> total_hours; 

    mph = trip_mileage/total_hours; 

    // Print the results in Miles and Kilometers 

    double trip_kilometers, kph; 

    trip_kilometers = trip_mileage * 1.6; 
    kph = trip_kilometers/total_hours; 

    cout << "Total miles " << setprecision(1) << setw(15) << trip_mileage << endl; 
    cout << " Miles/Hour " << setw(15) << mph << endl; 
    cout << "Total Kilometers" << setw(10) << trip_kilometers << endl; 
    cout << " Kilometers/Hour" << setw(10) << kph << endl; 


} 

オーケー、私は値を持っていた前に、私は、私は数式を計算する問題を修正しました。

しかし、私はまだ同様の問題があります。私の答えは、私が必要とするように小数点以下1桁で表示されません。

EX: 1E + 001の代わりに、10.5 9E + 001の代わりに、87.5

+1

fixedキーワードを使用しても問題は解決していませんか? – user3286661

答えて

2

修正されたコード:

// Lab 3 Exercise 2 
// Calculate MPH (miles Per Hour) and KPH (Kilometers Per Hour). 
// 
// Program by: Mohamed El-Malah 

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 

    // Have the user enter his start and end mileage 
    double start_mileage, end_mileage; 

    cout << "Enter your starting mileage: "; 
    cin >> start_mileage; 

    cout << "Enter your end mileage: "; 
    cin >> end_mileage; 

    double trip_mileage = end_mileage - start_mileage; 
    // Have user input the hours the trip took 
    double total_hours, mph; 


    cout << "How man hours was the trip: "; 
    cin >> total_hours; 

    mph = trip_mileage/total_hours; 
    // Print the results in Miles and Kilometers 

    double trip_kilometers, kph; 

    trip_kilometers = trip_mileage * 1.6; 
    kph = trip_kilometers/total_hours; 

    /**** fixed stream manipulator makes cout not use scientific notation ****/ 

    cout << "Total miles " << fixed << setprecision(1) << setw(15) << trip_mileage << endl; 
    cout << " Miles/Hour " << setw(15) << mph << endl; 
    cout << "Total Kilometers" << setw(10) << trip_kilometers << endl; 
    cout << " Kilometers/Hour" << setw(10) << kph << endl; 


} 

あなたは変数total_hourstrip_mileageの順序でめちゃめちゃにしていました。ユーザーからの適切な入力を行った後で、変数の値を使用/計算してください。そうでなければ、ランダムな値が使用されます。

さらに、coutに科学記法を使用させないようにするには、std::fixedストリームマニピュレータを使用する必要があります。

+0

@Mohamed Elmalahだから私はキーワードfixedを使用しています。私のプログラムを実行してみてください。 – user3286661

+0

ああ、私はそれを完全に忘れてしまった!!プログラムは意図したとおりに動作しています!ありがとう! –

2

こちらをご覧ください:

double trip_mileage = end_mileage - start_mileage; 

cout << "Enter your starting mileage: "; 
cin >> start_mileage; 

cout << "Enter your end mileage: "; 
cin >> end_mileage; 

を使用すると、必要な入力用のユーザーを尋ね前に、あなたはあなたの旅行の走行距離を計算しています。変数を宣言しますが、後になるまで計算を行いません。

double trip_mileage; 

cout << "Enter your starting mileage: "; 
cin >> start_mileage; 

cout << "Enter your end mileage: "; 
cin >> end_mileage; 

trip_mileage = end_mileage - start_mileage; 

あなたはtotal_hoursで再びいくつかのミスを犯します。私はあなたがそれを理解できるようにします。

2

これらの行の順序を変更してください。入力がtotal_hoursになる前であっても、先に計算するのはmphです。その場合、total_hoursにガベージ値が割り当てられ、結果が異なります。

double total_hours, mph; 
cout << "How man hours was the trip: "; 
cin >> total_hours; 
mph = trip_mileage/total_hours; 

と同じ程度trip_mileage

cout << "Enter your starting mileage: "; 
    cin >> start_mileage; 

    cout << "Enter your end mileage: "; 
    cin >> end_mileage; 

    double trip_mileage = end_mileage - start_mileage; 
関連する問題