| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:请帮忙改一个点灯的程序
只看楼主 加入收藏
落花流水
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-20
收藏
 问题点数:0 回复次数:2 
请帮忙改一个点灯的程序

偶是新会员,多多关照
点灯游戏大家都知道的吧
我的程序实现把5*5=25盏灯点亮,大家帮忙改一下,怎么样输入任意数N,实现N*N盏灯的算法


我的程序如下


//file name:diandeng.cpp
//该程序实现点灯游戏的结果;

#include <iostream>
#include <cmath>

using namespace std;

void chang(int[][5]);
void prin(int[][5]);
void main()
{int a[5][5] = {
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
cout<<"Before chenged\n";
prin(a);//打印输出a的原始状态;

cout<<"The order is:"<<endl;
chang(a);
cout<<"\nAfter changed:\n";
prin(a);//打印输出a的末状态;
}

//************************* chang函数 ***************
void chang(int a[][5])
{
int m=0;
int x=0;

do{m+=1;

for(int i=0;i<=4;i++)
{for(int j=0;j<=4;j++)
{if(a[i][j]==0)
{m-=1;
if(!(x%5))
cout<<'\n';
cout<<i+1<<','<<j+1<<'\t';
a[i][j]=1;//若当前值为0,则改变它;

if((i-1)>=0)//若第i-1列有元素,则执行if语句,否则跳过;
{if(a[i-1][j]==1)
a[i-1][j]=0;
else
a[i-1][j]=1;
}
if(i+1<=4)//若第i+1列有元素,则执行if语句,否则跳过;
{
if(a[i+1][j]==1) a[i+1][j]=0;
else a[i+1][j]=1;}

if((j-1)>=0)//若第j-1行有元素,则执行if语句,否则跳过;
{if(a[i][j-1]==1)
a[i][j-1]=0;
else
a[i][j-1]=1;
}
if((j+1)<=4)//若第j+1行有元素,则执行if语句,否则跳过;
{if(a[i][j+1]==1)
a[i][j+1]=0;
else
a[i][j+1]=1;}

x+=1;}
}
}
}while(m!=0);
}

//**************** prin函数 ****************************
void prin(int a[][5])
{
cout<<"a[5][5]=:"<<"\n{\n";
for (int m=0;m<=4;m++)
{
for(int n=0;n<=4;n++)
cout<<a[m][n]<<',';
cout<<'\n';}
cout<<'}'<<endl;
}

搜索更多相关主题的帖子: 点灯 
2005-11-20 02:19
落花流水
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-11-20
收藏
得分:0 

咋就没人回泥?是不是介个问题太菜了?

2005-11-20 19:45
紫色的蜗牛
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-3-22
收藏
得分:0 
问问题最好把原题带上...

2005-11-21 21:21
快速回复:请帮忙改一个点灯的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016165 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved