读书人

帮忙改正一下代码,该怎么处理

发布时间: 2012-02-15 12:09:43 作者: rapoo

帮忙改正一下代码
{
int current,m,n;
current=0;
m=3;
n=8;
int a[8]={1,2,3,4,5,6,7,8};
const int *po[8];
for(int l=0;l<n;++l){po[l]=&a[l];}
for(int i=0; i<n-1; ++i){
for(int j=1; j<m; ++j){
while (po[current]==NULL){--j;}
current=(current+1)%n;
}
while(po[current]==NULL){current=(current+1)%n;}
cout<<a[current]<<endl;
po[current]=NULL;
current=(current+1)%n;
}
return 0;
}
这是个约瑟夫问题
循环输出应当是
3
6
1
5
2
8
4
7
但不知道为什么,代码运行后却只输出
3
6
1
谢谢高手能它矫正


[解决办法]
程序怎么写成这样?
看着爽吗??
[解决办法]
LZ抱歉,不是说教什么东西。
就是这个风格让人看着不舒服。
[解决办法]
第1个while用错了,没有循环出口
[解决办法]
第1个while用错了,没有循环出口
把第一个while改成if就可以了
[解决办法]
#include <iostream.h>
int main()
{
int current,m,n;
current=0;
m=3;n=8;
int a[8]={1,2,3,4,5,6,7,8};
const int *po[8];
for(int l=0;l <n;++l)
{
po[l]=&a[l];
}
for(int i=0; i <n-1; ++i)
{

for(int j=1; j <m; ++j)
{
if(po[current]==NULL)//不能用while不然就是一个死循环的.
{
--j;

}
current=(current+1)%n;
}
while(po[current]==NULL)
{
current=(current+1)%n;
}
cout <<a[current] <<endl;
po[current]=NULL;
current=(current+1)%n;
}
return 0;
}
[解决办法]
我也写了一个

C/C++ code
#include <iostream>using namespace std;const int N = 100;int main(){    int a[N];    int *pa[N];    int m, iCurrent = 0, sum = 0, index = 0;    cout<<"输入m值"<<endl;    cin>>m;    for(int i = 0; i < N; ++i)    {        a[i] = i + 1;        pa[i] = a + i;    }    int j = 0;    while( sum < N )    {        for( j = 1; j < m; ++j )        {            if( pa[iCurrent] == NULL )            {                --j;                ++sum;            }            (++iCurrent) %= N;        }        while( NULL == pa[iCurrent] )        {            (++iCurrent) %= N;            ++sum;        }        pa[iCurrent] = NULL;        cout<<a[iCurrent]<<"\t";        (++iCurrent) %= N;    }    return 0;}
[解决办法]
int main()
{
{
int current,m,n;
current=0;
m=3;
n=8;
int a[8]={1,2,3,4,5,6,7,8};
const int *po[8];
for(int l=0;l <n;l++){po[l]=&a[l];}
for(int i=0; i <n; i++){
for(int j=1; j <m; j++){
if(po[current]==NULL){j--;}
current=(current+1)%n;
}
while(po[current]==NULL){current=(current+1)%n;}
cout <<a[current] <<endl;
po[current]=NULL;
current=(current+1)%n;
}
return 0;
}
}

读书人网 >C++

热点推荐