2016-05-17 29 views
-1

プログラムは保存するアイテムの数を尋ねて、アイテム名と価格を尋ねます。 最後に、すべての項目を表に表示する必要があります。重複した項目は1つの項目として表示する必要があります。小文字だけを使用してください。 表示は次のようになります。forループが正しく動作していません。C++

私の問題#1は、その価格とアイテムが別の入力に等しい場合、プログラムは1としてカウントすべきであり、アイテムの量が依存することですいくつの同じ入力(項目と価格)で

問題#2は、void関数の1番目のforループが正しく動作せず、常に項目と価格を求めて停止しない(#3)、項目番号も正しく機能していないということです。声明は、ハード・ツー・スポットの問題を持っている場合

#include<iostream> 
using namespace std; 
int num; 




void numItems(int num){ 
    string items[num]; 
    double price[num]; 
    int quantity[num]; 

    for(int x=0;x<num;x++){ 

     cout<<"Item #"<<x+1<<": "; 
     cin.get();//cin.ignore(); 
     /*cin>>items[x];*/getline(cin,items[x]); 

     cout<<"Price #"<<x+1<<": "; 
     cin>>price[x]; 

     if(x=1){ //(x==1) fixed 
      if(items[x]==items[x-1] && price[x]==price[x-1]){ 
       quantity[x]++; 
      } 
     } 
     cout<<"\n\n"; 
    } 

    cout<<"============RECEIPT=============\n\n"; 

    cout<<"Items\t\t\t\tPrice\t\t\t\tQuantity"<<endl; 

    for(int x=0;x<num;x++){ 
     if(x=1){ 
      if(items[x]==items[x-1]){ 
       cout<<items[x]<<"\t\t\t\t"<<price[x]<<"\t\t\t\t"<<quantity<<endl;  
      }else continue; 
     } 
    } 
} 







int main(){ 

    cout<<"===ITEM AUDIT==="<<endl; 



    cout<<"Enter number of items to store: "; 
    cin>>num; 
    cout<<"\n\n"; 

    numItems(num); 

} 
+0

二重方程式記号ではなく、 'if(x = 1){'と書いています。 '='はC++の代入演算子なので、反復ごとに 'x'の値を1に設定します。 –

+0

Typo。 'if(x = 1)'は、両方のループの繰り返しごとに 'x'を' 1'に設定します。あなたはおそらく 'if(x == 1)'を意図しています。 – Peter

+0

'if(x = 1)'は 'if(x == 1)'でなければなりません。デバッガのみを使用している場合... –

答えて

2

ザ・:ここ

が私のコードです:ここに絵があります

if(x=1){ 

があるべき

if(x == 1) { 

偽造しないでください両方のタイプミスを修正するために!

+4

難しくありません。すべてのコンパイラは警告を出します。 –

+0

申し訳ありませんが、私はそれを見ませんでした。 Marinovに感謝します。残っている問題は#1です。数字2と数字3はそれによって固定されます(x == 1)。 hehe – Dem

+2

@Jacek - ほとんどのコンパイラはこのような警告を出すように設定できますが、デフォルトではそうしないでください。 – Peter

関連する問題