贴两个程序出来

kelkch 2008-01-18 08:43:40
下面是我的地图maker. 生成位于5000x5000中心的diameter边长的density密度的正方形. 输出坐标是中心处79x79的范围.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MIN_DIAMETER 1
#define MAX_DIAMETER 5000
#define MIN_DENSITY 0
#define MAX_DENSITY 100
#define MIN_GENERATION 0
#define MAX_GENERATION 1000000000

int main( int argc, char* argv[] )
{
if( argc != 5 ) {
printf( "\n%s <filename> <diameter> <density> <generations>", argv[0] );
printf( "\nfilename:\toutput filename" );
printf( "\ndiamater:\t%d - %d", MIN_DIAMETER, MAX_DIAMETER );
printf( "\ndensity:\t%d - %d", MIN_DENSITY, MAX_DENSITY );
printf( "\ngenerations:\t%d - %ld\n", MIN_GENERATION, MAX_GENERATION );
exit(1);
}

char *pcFileName;
int diameter, density;
long generations;

pcFileName = argv[1];
diameter = (int)strtol( argv[2], '\0', 10 );
density = (int)strtol( argv[3], '\0', 10 );
generations = strtol( argv[4], '\0', 10 );

if( (diameter<MIN_DIAMETER || diameter>MAX_DIAMETER) ||
(density<MIN_DENSITY || density>MAX_DENSITY) ||
(generations<MIN_GENERATION || generations>MAX_GENERATION) ) {
printf( "\nInvalid parameter.\n" );
exit(1);
}

FILE *pFile;
if( (fopen_s(&pFile,pcFileName,"w")) != 0 ) {
printf( "\nCreate file fails.\n" );
exit(1);
}

int start = MAX_DIAMETER/2 - (diameter-2)/2;
int end = start + diameter - 1;
long all = (end-start+1) * (end-start+1);
int i, j;

srand( (unsigned int)time(NULL) );
for( i=start; i<=end; i++ ) {
for( j=start; j<=end; j++ ) {
if( rand()%MAX_DENSITY+1 <= density ) {
fprintf( pFile, "%d %d\n", i, j );
}
}
printf( "\r%3u%%", (j-start+1)*(i-start+1)*100/all );
}
fprintf( pFile, "0 0\n" );
fprintf( pFile, "%ld\n", generations );
fprintf( pFile, "2461 2461 2539 2539\n" ); // 79 x 79 at center
fclose( pFile );

printf( "\nDone.\n" );

return 0;
}
...全文
172 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangyixian525 2008-01-20
  • 打赏
  • 举报
回复
楼主用的什么编译器啊,
也写个详细点的注释啊.
killgxlin 2008-01-18
  • 打赏
  • 举报
回复
kelkch 2008-01-18
  • 打赏
  • 举报
回复
这个调用是将地图写进finalmap.txt文件. 全写时间太长. 写进边界4层和中心1000x1000范围. 加在主程序最后, 可用来比较不同情况下的输出是否一致.

void WriteMapToFile()
{
char pFileName[] = "finalmap.txt";
int row, col;
FILE *pFile;

if( fopen_s( &pFile, pFileName, "w" ) != 0 ) {
printf( "Write map to file failed.\n" );
return;
}

for( row=0; row<=3; row++ ) {
for( col=0; col<=MAXCOL+1; col++ ) {
fprintf( pFile, "%d%d\n", map[row][col], numNeighbors[row][col] );
}
}

for( row=MAXROW-2; row<=MAXROW+1; row++ ) {
for( col=0; col<=MAXCOL+1; col++ ) {
fprintf( pFile, "%d%d\n", map[row][col], numNeighbors[row][col] );
}
}

for( col=0; col<3; col++ ) {
for( row=4; row<=MAXROW-3; row++ ) {
fprintf( pFile, "%d%d\n", map[row][col], numNeighbors[row][col] );
}
}

for( col=MAXCOL-2; col<=MAXCOL+1; col++ ) {
for( row=4; row<=MAXROW-3; row++ ) {
fprintf( pFile, "%d%d\n", map[row][col], numNeighbors[row][col] );
}
}

for( row=2001; row<=3000; row++ ) {
for( col=2001; col<=3000; col++ ) {
fprintf( pFile, "%d%d%d%d\n", row, col, map[row][col], numNeighbors[row][col] );
printf( "\r%3u%% done", ((row-2001)*1000+(col-2000))/10000 );
}
}

fclose( pFile );
printf( "\n" );
return;
}

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧