我必须检查数组的所有元素是否都等于 1.并将其用作一段时间的条件..我该怎么做

I have to check whether all the elements of an array is equal to one or not...and use it as a while condition...how do i do that?

本文关键字:条件 一段时间 我该怎么做 数组 检查 是否 元素      更新时间:2023-10-16

我有一个数组....我需要检查它的所有元素是否都等于 1,并将其作为 while 条件传递。那是。。。我的代码应该被执行,直到数组的所有成员都变成一个。我的代码是这样的:

    #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] ;
    }
   }
  }

错误在于此语句。

while(ele[k]= 1)

它将始终返回 true,因为 ele[k] 被分配的值 1 不是 0,导致无限循环。也没有必要包含这么多的 for 循环和 while 循环。您的状况应该是这样的:

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

而且根本不需要任何 for 循环。您的问题与您编写的代码不匹配。如果确实如此,你的意思是简单地用 1 替换 ele[k] 的所有值,我提供的上述代码应该足够了,并且你的代码中不会使用任何其他语句。首先,我认为您应该在循环中学习并了解它们本质上是如何工作的。此外,无论错误在什么代码中,您都不应该发布无格式的代码。