2012-02-02 33 views
0

このコードでは、学生の身元と現在の残高の入力を受け付けます。 -999はA-Numberとしてタイプされ、ループを中断します。または、30人の学生が入力されるまで実行されます。ループ出力が表示されない

プログラムの一番下にあるMy forループは、入力されたAナンバー、学生名、および残高を、入力されたのと逆の順序でリストすることになっています。何もリストされていません。ジャスト番号:、学生のヘッダ:,およびバランス:

私は簡単な説明があります知っているが、私はちょうど考えることができないと私は誰かが私のためにそれを指摘することができます願っています...

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

int main(){ 
    const int maxStudents = 30; 
    struct Students{ 
     string studentName; 
     int aNumber; 
     double outstandingBalance;}; 

    Students students[maxStudents]; 

    int count = 0; 
    for(; count < maxStudents-1; count++) 
    { 
     cout<<"\nA-Number:"; 
     cin>>students[count].aNumber; 
     if(students[count].aNumber == -999) 
       break; 
      cout<<"Student Name:"; 
      cin.ignore(); 
      getline(cin,students[count].studentName); 
      cout<<"\nOutstanding Balance:"; 
      cin>>students[count].outstandingBalance; 
    } 

    cout<<setw(20)<<"\nA-Number "<<"Name "<<"Balance "; 

    for(; count >= maxStudents-1; count--) 
     cout<<setw(20)<<students[count].aNumber<<" "<<students[count].studentName<<" "<<students[count].outstandingBalance<<endl; 

    system("pause"); 
    return 0; 
} 
+3

「私と一緒に裸でください」 - でも私はあなたを知らない! –

+0

おそらく、現在のカウントをゼロ以上にして反復したいとします。カウントは決して最大の生徒数より大きくなることはありません。 –

+0

iostreamsは一般的にバッファリングされているので、出力が期待通りに出力されるようにフラッシュを見てみたいかもしれません.... –

答えて

4

countが既に小さすぎるためループが実行されません(ループが完全に実行された場合はcount == maxStudents - 1になるため、1回のパスが可能です)。ループ条件はcount >= 0である必要があります。

+0

ありがとう、私はそれが単純だと分かっていましたが、今私にはぼやけている。 – sircrisp

0

最後のforループは単に間違っています。使用:

for (int i=count; i=>0; i--) 

逆の順序で(i)番目のレコードを表示するかどうかを慎重に確認してください。あなたのループはのから始まります。それはどれくらいの期間実行されるべきですか?あなたの0番目のレコードに達していない限り。それぞれの継承で、iを1減らします。最後に、"i"(カウンター)を使用して、表示しようとしているレコード番号として使用します。

今後のアドバイスは、LISTの代わりにDISPLAYやCOUTなどの用語を使用することです。 LISTはリンクされたリストと他の多くのものを参照します。

関連する問題