2017-10-22 5 views
-2

割り当てには、すべての繰り返しブロックを関数に置き換える必要がありますが、検証ループでこれを行う方法を理解できません。 コード内のループが入力した番号が0と500の間であることを確認しながら、私は現在、私はこれらのコードの行(またはそれらのほとんどを)交換する機能を設定したいと思います使用しています:C++ユーザー入力の実数を別の関数で検証する方法は?

while (inMoney < 0 || inMoney > 500) 
     { 
      cout << "ERROR: invalid conversion value of '" << inMoney 
       << "'. " << endl; 
      cout << "Enter a value to convert between 0 and 500: "; 
      cin >> inMoney; 
     } 

double validate() 
{ 
    double inMoney; 
    cout << "Enter a value to convert between 0 and 500: "; 
    cin >> inMoney; 
    while (inMoney < 0 || inMoney > 500) 
    { 
     cout << "ERROR: invalid conversion value of '" << inMoney 
      << "'. " << endl; 
     cout << "Enter a value to convert between 0 and 500: "; 
     cin >> inMoney; 
    } 
    return(inMoney); 
} 

と私はこれを行うことによって()int型の主以内にそれを呼び出すようにしようとしている:

私は現在、私の機能のためにこれを持っている

私はについて何かを欠けているように私には感じ
switch (code) 
    { 
    case 'a': 
     cout << "\nUS Dollar -> British Pound" << endl; 
     validate(); 
     outMoney = inMoney * USDtoPND; 
     cout << "$" << inMoney << " equals " 
      << (char)PND_SYMBOL << outMoney << endl; 
     break; 

関数が呼び出される方法、および/またはこの種の検証を実際にどのように構築するかを示します。私は、私の検証機能の外でcin文を残す必要がありますか? validate関数はmain関数の後に来る必要がありますか?現在コンパイルされていますが、aを入力してvalidate()を実行すると、inMoneyが適切に初期化されていないことを示すランタイムエラーが発生します。

+0

、簿記はなりますあなたに感謝してください。 – user0042

答えて

0

あなたの関数は私だけだろう、99%の罰金です:それが、関数呼び出しではありませんので、これはそれが実際に

  • を何であるから、それは、readDouble()に名前だ

    • 変更は、return文を修正return inMoney;
    その後

    、代わりに:

    cout << "\nUS Dollar -> British Pound" << endl; 
    validate(); 
    outMoney = inMoney * USDtoPND; 
    
    あなたは、単に使用し、inMoneyに戻り値を保存しないので、間違ってい

    cout << "\nUS Dollar -> British Pound" << endl; 
    inMoney = readDouble(); 
    outMoney = inMoney * USDtoPND; 
    
  • 0

    私はあなたが検証機能は結構ですだと思う、唯一のものは、そのが戻っている値が、実際にはないということですメインスイッチコードの変数に設定します。だから、(double型のもあるinMoneyと仮定して)、次のような検証()関数を呼び出している行を変更します。あなたはdouble`または `float``とお金の値を表すべきではありません

    switch (code) 
        { 
        case 'a': 
         cout << "\nUS Dollar -> British Pound" << endl; 
         inMoney = validate(); // change here 
         outMoney = inMoney * USDtoPND; 
         cout << "$" << inMoney << " equals " 
          << (char)PND_SYMBOL << outMoney << endl; 
         break; 
    
    関連する問題