2016-07-09 2 views
-1

過去1年間のインフレ率を測定するプログラムを作成します。このプログラムは、1年前と今日の両方の商品(ホットドッグや1カラットのダイヤモンドなど)の価格を求めるものです。それは価格の差を前年の価格で割ったものとして、インフレ率を推定する。あなたのプログラムは、ユーザーが望むだけ頻繁にこの計算を繰り返すことができます。インフレ率を計算する関数を定義する。インフレ率は、比率をパーセントで指定するdouble型の値でなければなりません。たとえば、5.3%の場合は5.3です。C++のインフレ率を測定する

プログラムでは、インフレ率を計算する関数を使用する必要があります。関数を使用しないプログラムは、すべてのテストが合格してもスコアがゼロになります。

ループを繰り返したいのですが、YまたはNを入力するのも不思議ではありません。ループも繰り返されます。 'Y'または 'y'を入力するとループが繰り返されると仮定します。誰が私のコードに間違っているか教えてもらえますか?

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

double calculate_inflation(double, double); 
int main() 
{ 
    double yearAgo_price; 
    double currentYear_price; 
    double inflation_Rate; 
    char again; 

do{ 
     cout << "Enter the item price one year ago (or zero to quit) : " << endl; 
     cin >> yearAgo_price; 

     cout << "Enter the item price today: " << endl; 
     cin >> currentYear_price; 

     cout.setf(ios::fixed) 
     cout.setf(iOS::showpoint); 
     cout.precision(2); 

     inflation_rate=calculate_inflation(yearAgo_price, currentYear_price); 
     cout << "The inflation rate is " << (inflation_rate*100) << " percent." << endl; 

     cout << "Do you want to continue (Y/N)?" << endl; 
     cin >> again; 

     }while((again =='Y') || (again =='y')); 

      return 0; 
} 

    double calculate_inflation (double yearAgo_price, double currentYear_price) 
    { 
     return ((currentYear_price-yearAgo_price)/ yearAgo_price); 
    } 
+1

すでに2つの素晴らしい答えがあります。コンパイルを妨げるいくつかのタイプミスがあることに注意してください。参照:http://ideone.com/mnzdxp – Christophe

答えて

1
while((again='Y') || (again='y')); 

あなたは比較演算子と間違え割り当てを持って

while((again=='Y') || (again=='y')); 

でなければなりません。それらはCとC++で異なっています。

コードの効果はまたはyagainに割り当てられ、新しい値が返されます。その文字は0ではないので、trueに変換されます。したがって、trueが返され、ループは無限になります。

編集:

デバッガを自分でそれを見つけた可能性がどのように:

ループは、このように、我々はその条件変数をチェックする必要が無限であるように思われます。したがって、again変数に時計を置き、ループ条件が評価されているときに変数が変化することを確認してください。問題が見つかりました。

+1

また、 'while(again = 'Y' || again = 'y')'と書いた場合、ほとんどのコンパイラはこれがおそらくあなたが望むものではないと警告します。 –

1

while ((again='Y') || (again='y')あなたはそう思わないと思います。変数againに割り当てています。 何をしたいのですか?==演算子をに、againを 'Y'または 'y'のいずれかに比較してください。

関連する問題