|
发表于 2004-4-21 18:26:23
|
显示全部楼层
#define MAXLINE 256
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char **argv)
{
char str[MAXLINE];
int maxofx,maxofy,minofx,minofy;
int i,j,k=0,temp,count;
float l,m,n;
float resultx,resulty;
float r=0;
int zuo,you;
int flag;
int fangxiang;
int bianshu;
FILE *fp;
float tempr;
float tempminr;
if(argc!=2)
{
printf("usage:%s <filename>\n",argv[0]);
exit(1);
}
/*打开文件,读取数据*/
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("Error!Can not open file %s\n",argv[1]);
exit(0);
}
if((fgets(str,MAXLINE,fp))==NULL)
{
printf("Error!Read data bianshu error\n");
exit(0);
}
bianshu=atoi(str); /*得出边数*/
int dot[bianshu+1][2];
dot[0][0]=dot[0][1]=0;
i=1;
maxofx=maxofy=minofx=minofy=0;
for(j=0;j<MAXLINE;j++) *(str+j)='\0';
temp=0;
flag=0;
count=0;
for(j=0;j<MAXLINE;j++)
{
if((*(str+j)=fgetc(fp))==EOF)
break;
if((*(str+j)>='0')&&(*(str+j)<='9'))
{
count++;
temp=atoi(str+j-count+1);
continue;
}
else
{
if(flag==1)
{
if(strcmp(str+j-1,"xx")==0)
{
dot[0]=dot[i-1][0];
dot[1]=dot[i-1][1]-temp;
maxofx=dot[0]>maxofx? dot[0]:maxofx;
maxofy=dot[1]>maxofy? dot[1]:maxofy;
minofx=dot[0]<minofx? dot[0]:minofx;
minofy=dot[1]<minofy? dot[1]:minofy;
temp=0;
i++;
flag=0;
count=0;
continue;
}
if(strcmp(str+j-1,"ss")==0)
{
dot[0]=dot[i-1][0];
dot[1]=dot[i-1][1]+temp;
maxofx=dot[0]>maxofx? dot[0]:maxofx;
maxofy=dot[1]>maxofy? dot[1]:maxofy;
minofx=dot[0]<minofx? dot[0]:minofx;
minofy=dot[1]<minofy? dot[1]:minofy;
temp=0;
i++;
flag=0;
count=0;
continue;
}
if(strcmp(str+j-1,"yy")==0)
{
dot[1]=dot[i-1][1];
dot[0]=dot[i-1][0]+temp;
maxofx=dot[0]>maxofx? dot[0]:maxofx;
maxofy=dot[1]>maxofy? dot[1]:maxofy;
minofx=dot[0]<minofx? dot[0]:minofx;
minofy=dot[1]<minofy? dot[1]:minofy;
temp=0;
i++;
flag=0;
count=0;
continue;
}
if(strcmp(str+j-1,"zz")==0)
{
dot[1]=dot[i-1][1];
dot[0]=dot[i-1][0]-temp;
maxofx=dot[0]>maxofx? dot[0]:maxofx;
maxofy=dot[1]>maxofy? dot[1]:maxofy;
minofx=dot[0]<minofx? dot[0]:minofx;
minofy=dot[1]<minofy? dot[1]:minofy;
temp=0;
i++;
flag=0;
count=0;
continue;
}
}
flag=1;
}
}
if((dot[bianshu][0]!=dot[0][0])||(dot[bianshu][1]!=dot[0][1]))
{
printf("所给条件无法组成多边行,请检查是否有误 \n");
exit(0);
} |
|