2016-07-15 36 views
-4

我有一個數組....我需要檢查它的所有元素是否等於一個,並將它作爲一個條件傳遞。那是......我的代碼應該被執行,直到數組的所有成員變成一個爲止。 我的代碼如下:我必須檢查一個數組的所有元素是否等於一個,並且將它用作一個條件......我該怎麼做?

#include <iostream> 
    #include <cstdlib> 


    using namespace std; 




     int main() 
    { 
     int ele[10];int crd[10];int dist[10] ; int fid[10] ; 
     int a; int i ; int j;int k = 0,l=0 ; // a is number of villages 

     cin>> a ; 
     for(i = 0;i<a;i++){ 
     cin>>ele[i] ; 
     } 
     for(i=0;i<a;i++){ 
      cin>>crd[i] ; 
     } 





    for(k = 0;k<a;k++){ 
    while(ele[k]= 1){ 
     for(i=0;i<a;i++){ 
     if(ele[i] == 0 && ele[i+1] == 1){ 
      dist[l] = std::abs(crd[i+1] - crd[i]) ; 
     fid[l] = i ; 
     l++ ; 


     }else if(ele[i]==1 && ele[i+1] == 0){ 
      dist[l] = std::abs(crd[i+1] - crd[i]) ; 
      fid[l] = i + 1; 
     l++ ; 

     // ele[i+1] = 1 
    } 

    } 



     for(i=0;i<l;i++){ 
     cout<<fid[i] ; 
     } 
    for(i=0;i<l;i++){ 

    cout<<dist[i]<<" " ; 

    } 

     for(i=0;i<l;i++){ 
     if(dist[0]>dist[i]){ 
     swap(dist[0],dist[i]) ; 
     ele[fid[i]] = 1 ; 
     //swap() 

     }else if(l=1){ 
     ele[fid[0]] = 1 ; 
     } 
     } 

     for(i=0;i<a;i++){ 
     cout<<ele[i]<<endl ; 
    } 

    cout<<dist[0] ; 
    } 
    } 
    } 
+0

請正確格式化您的代碼 –

+0

有什麼問題嗎?如果(l = 1){else {fid [0]] = 1,則其他if( –

+1

) } } –

回答

0

錯誤在於此聲明。

while(ele[k]= 1) 

它將始終作爲ELE [k]的返回true被分配值1,其不爲0,導致無限循環。也不需要包含如此多的for循環和while循環。你的情況應該是這樣的:

k=0; 
while(k < a) 
{ 
    ele[k] = 1; 
    k++; 
} 

而且根本不需要任何for循環。你的問題與你寫的代碼不符。如果的確如此,你的意思是簡單地用1代替ele [k]的所有值,上面提供的代碼應該就足夠了,並且代碼中不會使用任何其他語句。我主要相信你應該在循環中研究並理解它們的基本工作原理。另外,不管錯誤是什麼代碼,你都不應該發佈未格式化的代碼。

相關問題