2012-12-03 63 views
0

我只想做那個循環中的一件事 - IF或ELSE ..(當它的真實和虛假的ofc,你知道它..)如果我有兩個輸入他們的信息的學生,我的第一組學生沒有很好的成績,第二個學生的成績很好,我的程序打印出來: 1)第一次循環:for it; s false所以它使得其他人 2 )關於第二個循環:所以它使假如如何在錯誤後停止循環

和我這是真的: 無信息 學生與優級...

我想看到的只是學生凱越nt等級(如果我使用BREAK;我會停止FOR循環)下面是我的代碼:

int gr; 
cout<<"Enter group that you want to check: ";cin>>gr; 
cout<<"Students with excellent grade in group "<<gr<<":\n"; 
    for(i=0;i<n;i++) 
     { 
      if(m[i][2]==gr && m[i][3]>=5.500) 
      { 
       for(j=0;j<4;j++) 
        cout<<setprecision(8)<<m[i][j]<<"\t"; 
      } 
      else 
        cout<<"No students with excellent grade in this group"<<endl; 

     } 

我在這裏有同樣的問題。我可以使用「布爾」類型,以及如何在該代碼(代碼是基於結構):

int x; 
bool no_info=false; 
p: cout<<"| What personal id you want to search for: ";cin>>x; 

for(int i=0;i<n;i++) 
{ 
    if(pov[i].id==x) 
    { 
    no_info=true; 
    cout<<pov[i].id<<endl; 
    cout<<pov[i].name<<endl; 
    cout<<pov[i].lastname<<endl; 
    cout<<pov[i].department<<endl; 
    cout<<pov[i].salary<<endl; 
    } 
} 
    if(no_info){ 
    cout<<"No information"<<endl;} 
goto p; 

EDITED!

+0

所以你知道,家庭作業標籤是[棄用](http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated)。 – chris

+0

在循環外創建一個數組。當你找到一個學生時,在循環內部將它存儲在數組中。循環之後,您現在擁有陣列中想要的所有學生。 – peacemaker

+0

對於作業標籤感到抱歉,和平解決者我想過這個,但...我不能用其他東西:? – Koleto

回答

2

很難理解你要達到的目標。但我認爲,你想要的是:

int gr; 
bool no_excellents = true; 
cout<<"Enter group that you want to check: ";cin>>gr; 
cout<<"Students with excellent grade in group "<<gr<<":\n"; 
for(i=0;i<n;i++) 
{ 
    if(m[i][2]==gr && m[i][3]>=5.500) 
    { 
     no_excellents = false; 
     for(j=0;j<4;j++) 
      cout<<setprecision(8)<<m[i][j]<<"\t"; 
    } 
} 

if(no_excellents) 
{ 
    cout<<"No students with excellent grade in this group"<<endl; 
} 

這不會阻止你for循環,將只打印那些誰擁有優秀成績的學生。如果沒有人有出色的成績,該計劃會告訴你。

+0

是的,但它不會顯示我,如果在該組中不是非常優秀的學生 – Koleto

+0

@ Koleto:你想顯示兩個列表?那些成績優秀的人和那些沒有? – dinkelk

+0

@chris是的,你是對的。所做的更改。 – dinkelk