我正在编写一个非常基本的程序,它创建一个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;
}
答案 0 :(得分:0)
检查这个条件:
while(sredniad<srednia){
如果是真的,它也永远不会改变,你处于无限循环中。