2016-04-22 12 views
-1

でforまたはwhileループ私はプログラミングIクラスの次の代入があります。各アイテムの価格のためのプロンプト配列されて一つは2つの、最大変数、(プログラミングI)

を。各商品の価格をpricesという配列に格納します。ユーザーが$ 1,000または5個のアイテムに達したら、どれくらいの額を消費したか、何個のアイテムを購入したか、残っている金額、平均価格などをプリントアウトします( )。
購入した商品の価格の表を印刷します。

私の元の試みは非常にマングルされました:

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

int main() 
{ 
    int cost = 1; 
    int total = 0; 
    int i = 0; 
    const int MAXNUM = 5; 
    int prices[MAXNUM]; 


    while (total < 1000 && cost !=0 && i < MAXNUM) 
    { 
     for (int x = 0; i < MAXNUM; i++) 
     { 
      cout << "Please enter the price of the item you are purchasing:"<< endl << i+1 << "." <<"$"; 
      cin >> cost; 
      total+=cost; 
     } 
//   total += cost; 
    } 
/* 


//  cout << \n << "Name: "; 
//  cin >> name; 
    } */ 
    cout << "You spent $" << total << " by purchasing " << /* **************** << */ " items, you have $" << 1000-total <</* " leftover, and your average price was $" << total/ ******** << */ "." << endl; 

    return 0; 
} 

だから私は、最初からやり直すとこれまでのところ、私はこれを持っている:今

#include <iostream> 
#include <string> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    const int NUMELS = 5; 

    int i, prices[NUMELS]; 
    string items [NUMELS]; 

    for (i = 0; i < NUMELS; i++) 
    { 
    cout << "Enter the name of the product: "; 
    cin >> items[i]; 
    cout << "Enter the price of the product: $"; 
    cin >> prices[i]; 
    } 
    cout << endl; 
    for (i = 0; i < NUMELS; i++)  
     cout << items[i]<< " cost you $"<< prices[i]<< endl; 

    return 0; 
} 

私の最大の困難は、持ってしようとしていますプログラムのチェックをして、$ 1000(私は過去にプログラムを書いています)を超えないようにしてください。また、ユーザーが5つ以上のアイテムを購入しないようにチェックしています。この後にはさらに多くのステップがありますが、ベースを見つけたら自分で残りを作ることができるはずです。

もし(acc> 1000)を入れようとしましたが、 が壊れました。私のforループの最後に、しかしその後this happened...

ありがとうございます!

+1

はSO割り当て質問が好きではありません試してみてください。 –

+1

あなたは質問しませんでした。また、問題がある唯一のヒントとしてリンクも好きではありません。 – user463035818

+1

'acc> 1000'の場合、出力は' NUMELS'までループしません。 – drescherjm

答えて

0

あなたはbreakを使用して、この

int count = 0, sum = 0; 
    while(count < 5 && sum <= 1000) 
    { 
    cout << "Enter the name of the product: "; 
    cin >> items[count ]; 
    cout << "Enter the price of the product: $"; 
    cin >> prices[count ]; 
    sum += prices[count ]; 
    count++; 
    } 
    cout << endl; 
    for (int i = 0; i < count; i++)  
    cout << items[i]<< " cost you $"<< prices[i]<< endl; 
+0

[前に間違った方法がありました] OPが同じミスを犯したとはいえ、元の割り当てが規定されている価格である$ 1000に達すると、これは壊れません –

+0

"<="〜 "<"、そしてそれはそれです –

1

あなたの試みのような

書き込み何かが悪い考えではなかったが、結果を出力するループが使用する必要があります

while(){} 

サイクルを使用することができます入力された要素の数。固定値ではありません。

int main() 
{ 
    const int NUMELS = 5; 

    int TotalPrice = 0; 
    int i, j, prices[NUMELS]; 
    string items [NUMELS]; 

    for (i = 0; i < NUMELS; i++) 
    { 
     if (TotalPrice >= 1000) 
      break; 

     cout << "Enter the name of the product: "; 
     cin >> items[i]; 
     cout << "Enter the price of the product: $"; 
     cin >> prices[i]; 

     TotalPrice += prices[i]; 
    } 
    cout << endl; 
    for (j = 0; j < i; j++)  
     cout << items[j]<< " cost you $"<< prices[j]<< endl; 

    return 0; 
} 
+0

これは '休憩' ** ** 1000で、終わったときだけではありません。 –

+0

@underscore_d:True、OPの上部に表示される「ユーザーが1,000ドルまたは5アイテムに達したとき」と表示されます。私にとってはそれは1000以上を意味します。 – Unimportant

+0

ああ - 良い点。私は下の方の言い換えを見ていたので、間違った人物だと思っています;-) –

1

私があなたを入手した場合、ユーザーが5ドルを買ったかどうかをチェックするループで$ 1000を超えているかどうかもチェックしたいと思うでしょう。もしそうなら、これはうまくいくはずです。

for (int i = 0, exceed = 0; i < NUMELS && exceed < 1000; i++){ 
    cout << "Enter the name of the product: "; 
    cin >> items[i]; 
    cout << "Enter the price of the product: $"; 
    cin >> prices[i]; 

    exceed += prices[i]; 
} 

この

+0

私はあまりにも遅かったと思います...驚くことなく私は上記と同じ答えを持っています – Wells

+0

カンマ演算子は最終入力式の値を返すだけなので、これは 'i

+0

それはありがとう...ちょうど@underscore_dを編集しました – Wells

関連する問題