#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
main ()
{
FILE *fp; //指標 變數名
int i,j,newline;
struct Line{int Lnumx,Lnumy,stx,sty,enx,eny;//線段名稱 <x,y>
char attribute;//存明筆或暗筆 V H
};
//第X劃的第Y線段 設一個Line結構 來存兩個點的值
struct Word{
char s[5];//存注音符號
int count;//存最多可以幾條線
struct Line Lines[10];//用法:結構名+變數名[個數]
}; //設Char的結構來存注音符號、線的數量以及引進Line的格式(兩個點)
//來構成Char
struct Word All[37];//宣告37個
fp=fopen("D:/94413016/20070329/a.txt","r");//開檔
if(fp==NULL){//檢查開檔有沒有成功
printf("open file error\n");
}
/*讀檔*/
for (i=0;i<37;i++) //因為已知txt檔的內容所以才可以這樣寫
{
fscanf(fp,"%s %d",All[i].s,&All[i].count);//將 count 讀入(位置)
for(j=0;j<All[i].count;j++)
{
fscanf(fp,"%d%d%d%d",&All[i].Lines[j].stx,&All[i].Lines[j].sty,
&All[i].Lines[j].enx,&All[i].Lines[j].eny);//印出線的兩個點
All[i].Lines[j].attribute='V';//直接判斷所有輸入的線段為明筆
}
}
fclose(fp);
/*判斷*/
for(i=0;i<37;i++)
{
All[i].Lines[0].Lnumx=1;//預設第一劃等於1
All[i].Lines[0].Lnumy=1;//預設第一線段等於1
for(j=1;j<All[i].count;j++)
{//後測的話J不能等於零(不能為第一劃)
if ((j!=0)
&&(All[i].Lines[j].stx==All[i].Lines[j-1].enx)
&&(All[i].Lines[j].sty==All[i].Lines[j-1].eny))
{
All[i].Lines[j].Lnumx=All[i].Lines[j-1].Lnumx;
All[i].Lines[j].Lnumy=All[i].Lines[j-1].Lnumy+1;//第X筆劃的的第Y+1線段
}else{
All[i].Lines[j].Lnumx=All[i].Lines[j-1].Lnumx+1;
All[i].Lines[j].Lnumy=1;//第X+1筆劃的第1條線段
}
}
}
for(i=0;i<37;i++)//判斷明筆暗筆‧列出暗筆
{
for(j=1;j<All[i].count;j++)
{
if (All[i].Lines[j].Lnumx=All[i].Lines[j-1].Lnumx+1)//如果是新筆劃就插入暗筆
{
for (newline=All[i].count-1;newline>=j;newline--)//newline從後面判斷回前面
{//將J的東西搬進J+1裡面
All[i].Lines[j+1].stx=All[i].Lines[j].stx;
All[i].Lines[j+1].sty=All[i].Lines[j].sty;
All[i].Lines[j+1].enx=All[i].Lines[j].enx;
All[i].Lines[j+1].eny=All[i].Lines[j].eny;
All[i].Lines[j+1].Lnumx=All[i].Lines[j].Lnumx;
}
All[i].count++;
}
else
{
All[i].Lines[j].attribute='H';
All[i].Lines[j].Lnumx=All[i].Lines[j-1].Lnumx+1;
All[i].Lines[j].Lnumy=1;
}
}
}
/*印出*/
for(i=0;i<37;i++)
{
printf("符號:%s\t 線數:%d \n",All[i].s,All[i].count);//印注音符號跟線段數
for(j=0;j<All[i].count;j++)
{
printf("(%d,%d)│%c│(%d,%d)\t(%d,%d)\n",
All[i].Lines[j].Lnumx,
All[i].Lines[j].Lnumy,
All[i].Lines[j].attribute,
All[i].Lines[j].stx,
All[i].Lines[j].sty,
All[i].Lines[j].enx,
All[i].Lines[j].eny);
}
printf("-------------------------------\n");
}
system("pause");
}
留言列表