0

タイトルは出来るだけ言葉にしてみました。ここでは、2 つの並列配列を介してインデックスを作成し、書式を設定して出力する関数があります。

void outputTable(string salsa_jars[], int jars_sold[], int index[])
{
   int totalSold = 0;
   cout << setw(8) << "\nSalsa type sells: " << endl
        << "-------------------------------" << endl;

   for(int i = 0; i <= (SALSA_TYPES-1); i++)
   {
    totalSold += jars_sold[index[i]];
    cout << setw(15) << left << salsa_jars[index[i]]
         << setw(15) << right << jars_sold[index[i]] << endl;
   }

   cout << "-------------------------------" << endl
        << "Total sales: " << setw(17) << totalSold << endl;
}

ここに画像の説明を入力

私が達成しようとしているのは、配列の最初と最後の出力に文字列を追加することです。以下は私の試みです。

void outputTable(string salsa_jars[], int jars_sold[], int index[])
{
   int totalSold = 0;
   cout << setw(8) << "\nSalsa type sells: " << endl
        << "-------------------------------" << endl;

   for(int i=0;i<=(SALSA_TYPES-1);i++)
   {
      if(i == 0){
      cout << setw(7) << left << salsa_jars[index[i]]
           << "(Highest)" << setw(14) << right
           << jars_sold[index[i]] << endl;
      }
      else if (i == (SALSA_TYPES-1)){
        cout << setw(7) << left << salsa_jars[index[i]]
        << "(Lowest)" << setw(15) << right
        << jars_sold[index[i]] << endl;
      }
      else{
        totalSold += jars_sold[index[i]];
        cout << setw(15) << left << salsa_jars[index[i]]
             << setw(15) << right << jars_sold[index[i]] << endl;
      }
    }  

    cout << "-------------------------------" << endl
         << "Total sales: " << setw(17) << totalSold << endl;
}

ここに画像の説明を入力

しかし、コードは冗長に見え、それを行う他の方法は考えられませんでした。誰かが何か指針を持っているなら、私はそれを感謝します。ありがとう。

4

1 に答える 1

0

エントリに適切なタイトルを用意し、それを表示するための一般的なロジックを使用するだけです:

for(int i=0;i<=(SALSA_TYPES-1);i++)
{
   string title = toString(salsa_jars[index[i]]);
   if(i == 0){
       title += " (Highest)";
   }
   else if (i == (SALSA_TYPES-1)){
     title += " (Lowest)";
   }
     totalSold += jars_sold[index[i]];
     cout << setw(15) << left << title
          << setw(15) << right << jars_sold[index[i]] << endl;
   }
 }  
于 2012-11-26T08:31:43.830 に答える