对于c ++中的循环不执行

时间:2015-11-11 19:28:54

标签: c++ for-loop

我正在编写一个非常基本的程序,它创建一个2D数组,并打印一次,对其进行一些操作并在第二次打印它。问题是,它只打印一次....代码如下:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
const int n=3;
int A[n][n];
int a, b;
do{
cin>>a>>b;}
while (a>=b);
for(int iw=0;iw<n;iw++) {
    for(int ik=0;ik<n;ik++) {
        A[iw][ik]=(rand()%(b-a))+a;
    }
  }
 for(int iw=0;iw<n;iw++){
    for(int ik=0;ik<n;ik++){
        cout<<A[iw][ik]<<'\t';
    }
    cout<<'\n';
  }
double sredniad, srednia;
    double sumad=0, sumag=0;
    int nd=0, ng=0;
    for(int i=0,iw=0;iw<n;iw++,i++){
        for(int ik=0;ik<n;ik++){
            if(ik!=(n-1-i)){
                if(ik>(n-1-i)){
            sumad=sumad+A[iw][ik];
          nd++;
                }
                if(ik<(n-1-i)){
            sumag=sumag+A[iw][ik];
            ng++;
                }
        }
            }
        }
   sredniad=sumad/nd;
   srednia=(sumad+sumag)/(nd+ng);
    while(sredniad<srednia){
    int max=a, min=b, wmax=0, wmin=0, kmax=0, kmin=0;
    for(int iw=0;iw<n-1;iw++){
        for(int i=0, ik=0;ik<n-1-i;iw++, i++){
            if (A[iw][ik]>max){
            max=A[iw][ik];
            wmax=iw;
            kmax=ik;
            }
            if (A[iw][ik]<min){
                min=A[iw][ik];
            wmin=iw;
            kmin=ik;
            }
        }
    }
            A[wmax][kmax]=min;
            A[wmin][kmin]=max;
            sumad=sumad-min+max;
            sumag=sumag-max+min;
        }
    for(int iw=0;iw<n;iw++){
        for(int ik=0;ik<n;ik++){
            cout<<A[iw][ik]<<'\t';
        }
        cout<<'\n';
    }
return 0;
}

1 个答案:

答案 0 :(得分:0)

检查这个条件:

 while(sredniad<srednia){

如果是真的,它也永远不会改变,你处于无限循环中。