0

ユーザーは、2 つの配列に格納される double と string を入力します。そのようです :

{
                 double DoC;
                 string Nm;
                 cout << " Please enter the amount charged to your credit card " << endl;
                 cin >> DoC;
                 cout << " Please enter where the charge was made " << endl;
                 cin >> Nm;
                 getline(cin, Nm);
                 cca.doCharge(Nm,DoC);
                 break;
                 }

次に、double と string が this に渡されます。

{
    if (amount > 0)
    {
        for (int i = 9; i != 0; i--)
        { 
            last10withdraws[i] = last10withdraws[i-1];
            last10charges[i] = last10charges[i-1];
        }

        last10withdraws[0] = amount;
        last10charges[0] = name;

        setBalanceW(amount);  
    }
    else
    {
        cout << " ERROR. Number must be greater then zero. " << endl;
    }
    return 0;
}

これは、データを配列に格納するのに非常にうまく機能しているようです。ただし、この関数を使用して、配列内のデータを表示します。

{
    cout << " Account: Creditcard Withdraws " << " " << " Account: Creditcard Deposits " << " " << " Account: Creditcard last 10 charges " << endl;
    cout << "            " << last10withdraws[0] << "                       " << last10deposits[0] << "                       " << last10charges[0] << endl;
    cout << "            " << last10withdraws[1] << "                       " << last10deposits[1] << "                       " << last10charges[1] << endl;
    cout << "            " << last10withdraws[2] << "                       " << last10deposits[2] << "                       " << last10charges[2] << endl;
    cout << "            " << last10withdraws[3] << "                       " << last10deposits[3] << "                       " << last10charges[3] << endl;
    cout << "            " << last10withdraws[4] << "                       " << last10deposits[4] << "                       " << last10charges[4] << endl;
    cout << "            " << last10withdraws[5] << "                       " << last10deposits[5] << "                       " << last10charges[5] << endl;
    cout << "            " << last10withdraws[6] << "                       " << last10deposits[6] << "                       " << last10charges[6] << endl;
    cout << "            " << last10withdraws[7] << "                       " << last10deposits[7] << "                       " << last10charges[7] << endl;
    cout << "            " << last10withdraws[8] << "                       " << last10deposits[8] << "                       " << last10charges[8] << endl;
    cout << "            " << last10withdraws[9] << "                       " << last10deposits[9] << "                       " << last10charges[9] << endl;
    cout << endl;

}

ユーザーが預金配列に 3 つの double を入力したとします。関数を呼び出して表示すると、次のようなものが得られます。

60
30
20
-9.25596e+061
-9.25596e+061
-9.25596e+061
-9.25596e+061
-9.25596e+061
-9.25596e+061

-9.25596e+061 が 0 になるようにするにはどうすればよいですか? 私は本当に私を助けるものを見つけることができませんでした. また、文字列を含む配列では、表示するために呼び出されたときに何も表示されません。どうしてこれなの ?

4

2 に答える 2

2

配列を次のように初期化します。

int last10withdraws[10] = {0};

これですべての要素がゼロになりました。

ユーザーが 3 つの数値を入力すると、最初の 3 つの要素は非ゼロになり (非ゼロのみが許可されていると仮定)、残りはゼロになります。

がクラス m のメンバーである場合last10withdraws(および C++03 を使用している場合)、メンバー初期化リストを使用して、すべての要素をゼロに初期化するデフォルト初期化を行うことができます。

class myclass
{
      int last10withdraws[10];
   public:
      myclass() : last10withdraws() 
      {       //^^^^^^^^^^^^^^^^^^^ member initializer list
      }
};

それが役立つことを願っています。

于 2013-04-18T02:52:04.327 に答える
0

値を初期化していないため、エラーが発生しています。まず、int last10withdraws[10] = {0};すべての値をゼロに初期化します。

于 2013-04-18T03:03:10.890 に答える