您的位置:首页 > 其它

设计二维数组,给出一个坐标,输出周围8个数,并将数组输出到文件

2014-01-08 13:19 316 查看
/***********************************************************/
/*	学生:刘中华                                           
/*	日期:2014-1-8                                         
/*	内容:设计二维数组,给出一个坐标,输出周围8个数
/*		                                     
/*                                                        
/***********************************************************/
#include<iostream>
#include<ctime>
#include<iomanip>
#include<fstream>
using namespace std;
void setdata(int a[8][8]);
void outdata(int a[8][8]);
void out_diagonal(int a[8][8]);
void mine(int a[8][8],int x,int y);
void change(int a[8][8]);
void write_file(int a[8][8]);
void main()
{
	int a[8][8],x,y;
	ofstream outfile;//定义文件输出流对象,对文件进行写操作
	outfile.open("myfile.txt",ios::out);
	if(!outfile.is_open())//判断文件是否成功打开
	{
		cout<<"open error!"<<endl;
		exit(1);
	}
	outfile.close();//先创建一个文件,再关闭,单独建立写文件函数
	setdata(a);
	write_file(a);
	outdata(a);
	cout<<endl;
	out_diagonal(a);
	cout<<"输入一个位置:";
	cin>>x>>y;
	mine(a,x,y);
	change(a);
	write_file(a);

}
void setdata(int a[8][8])
{
	int i,j;
	srand(time(0));
	for(i=0;i<8;i++)
		for(j=0;j<8;j++)
			a[i][j]=rand()%50+1;
	return;

}
void outdata(int a[8][8])
{
	int i,j;

	for(i=0;i<8;i++)
	{
		for(j=0;j<8;j++)
		{
			cout<<setiosflags(ios::left)<<setw(6)<<a[i][j];//比较长,设置了一下输出格式而已
		}
		cout<<endl;
	
	}

}
void out_diagonal(int a[8][8])
{
	int i,j;
	for(i=0,j=0;i<8;i++,j++)
		cout<<setw(4)<<a[i][i];
	cout<<endl;
}
void mine(int a[8][8],int x,int y)//输入一个坐标,输出周围的8个数,不足8个,按实际情况
{
	int m,n;
	for(m=x-1;m<=x+1;m++)//这个算法想了很久,刚开始一直跳不出按类分情况,一一列举的思路,
		for(n=y-1;n<=y+1;n++)//后来想到,其实可以将所有9个数一一输出,不满足条件的不输出即可
		{
			if(m<0||m>7||n<0||n>7)
				continue;
			if(m==x&&n==y)
				continue;
			cout<<a[m]
<<'\t';
		}
	cout<<endl;
}
void change(int a[8][8])
{
	int i,j;
	for(i=1;i<8;i++)//第二行到第8行
		for(j=0;j<8;j++)
			if(j!=7)
				a[i][j]=a[i-1][j]+a[i-1][j+1];
			else
				a[i][j]=a[i-1][j]+a[i-1][0];//在最边上一列也即第7列,则要加上第0列元素

}
void write_file(int a[8][8])//写数据到文件函数
{
	int i,j;
	ofstream outfile;
	outfile.open("myfile.txt",ios::app);
	if(!outfile.is_open())//判断文件是否成功打开
	{
		cout<<"open error!"<<endl;
		exit(1);
	}

	for(i=0;i<8;i++)//写文件
	{
		for(j=0;j<8;j++)
			outfile<<a[i][j]<<'\t';
		outfile<<'\n';
	}
	
	outfile.close();//关闭文件

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐