?? 兩次換乘.cpp
字號:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int l,k=0;
char dang_str[100];
struct zhan
{
char name[5];
int n;
}zhandian[3969];
struct Stop_Table
{
char Stop_Name[5];
char Roadway_Name[5];
int Roadway_No;
}stop[29886];
struct Road_Table
{
char Roadway_Name[5];
char Charge_Mode;
int Stop_Amount;
char Stop_Name[87][5];
}road[1041];
struct Line_Table
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
//char Way_2[5];
//char Stop_3[5];
//char Way_3[5];
// char Stop_4[5];
}line[20000];
struct Line_Table1
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
//char Way_2[5];
//char Stop_3[5];
//char Way_3[5];
// char Stop_4[5];
}line1[500];
struct Line_Table2
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
// char Way_2[5];
//char Stop_3[5];
//char Way_3[5];
// char Stop_4[5];
}line2[500];
struct Line_Table3
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
//char Way_2[5];
//char Stop_3[5];
//char Way_3[5];
//char Stop_4[5];
}line3[500];
struct Line_Table4
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
char Way_2[5];
char Stop_3[5];
//char Way_3[5];
// char Stop_4[5];
}line4[5000];
struct Line_Table5
{
int Stop_Amount;
int Change_Amount;
char Stop_1[5];
char Way_1[5];
char Stop_2[5];
char Way_2[5];
char Stop_3[5];
char Way_3[5];
char Stop_4[5];
}line5[20000];
char *JieQu(char c[],int a,int m)//截取字符串
{
int i;
char jiequ_str[5];
for(i=0;i<m;i++)
{
jiequ_str[i]=c[a-1+i];
}
jiequ_str[i]='\0';
return(jiequ_str);
}
int Find_Tow_Stop_Road(char *Start,char *End)
{
int i,j,a=0,b=0,sige=0;
char tm1[5];
l=0;
for(i=1;i<atoi(Start);i++)
{
a=a+zhandian[i].n;
}
for(j=1;j<atoi(End);j++)
{
b=b+zhandian[j].n;
}
for(int e=a+1;e<=a+zhandian[atoi(Start)].n;e++)
{
for(int r=b+1;r<=b+zhandian[atoi(End)].n;r++)
{
if(strcmp(stop[e].Roadway_Name,stop[r].Roadway_Name)==0&& (stop[e].Roadway_No<stop[r].Roadway_No || stop[e].Roadway_Name[0]=='H'))
{
l++;
strcpy(line[++k].Stop_1,Start);
strcpy(line[k].Stop_2,End);
strcpy(line[k].Way_1,stop[e].Roadway_Name);
if(stop[e].Roadway_Name[0]!='H'&&stop[r].Roadway_No>stop[e].Roadway_No)
{
line[k].Stop_Amount=stop[r].Roadway_No-stop[e].Roadway_No;
}
else if(stop[e].Roadway_Name[0]=='H'&&stop[r].Roadway_No<stop[e].Roadway_No)
{
strcpy(tm1,JieQu(stop[e].Roadway_Name,2,3));
int x=atoi(tm1);
line[k].Stop_Amount=road[2*x-1].Stop_Amount-(stop[e].Roadway_No-stop[r].Roadway_No)-1;
}
else
{
line[k].Stop_Amount=stop[r].Roadway_No-stop[e].Roadway_No;
}
int n1;
if(stop[e].Roadway_Name[0]=='D')
{
strcpy(tm1,JieQu(stop[e].Roadway_Name,2,3));
n1=2*atoi(tm1);
if(road[n1].Charge_Mode=='1')
line[k].Change_Amount=1;
else if(road[n1].Charge_Mode=='F')
{
if(line[k].Stop_Amount<=20)
line[k].Change_Amount=1;
else if(line[k].Stop_Amount>20&&line[k].Stop_Amount<=40)
line[k].Change_Amount=2;
else
line[k].Change_Amount=3;
}
}
else
{
strcpy(tm1,JieQu(stop[e].Roadway_Name,2,3));
n1=2*atoi(tm1)-1;
if(road[n1].Charge_Mode=='1')
line[k].Change_Amount=1;
else if(road[n1].Charge_Mode=='F')
{
if(line[k].Stop_Amount<=20)
line[k].Change_Amount=1;
else if(line[k].Stop_Amount>20&&line[k].Stop_Amount<=40)
line[k].Change_Amount=2;
else
line[k].Change_Amount=3;
}
}
{
}
sige=1;
}
}
}
if(sige==0)
{
return(0);
}
else
return(1);
}
void Nonce_Str(FILE *fp)//取當前字符串
{
char ch;
int i=0;
do{
if(ch=='\n')
break;
ch=fgetc(fp);
dang_str[i]=ch;
i++;
}while(ch!='\t');
dang_str[i-1]='\0';
}
void hh()
{
FILE *fp,*fpout;
char cc[5];
int N,a;
fp=fopen("zhandian","r");
fpout=fopen("zh_ci","w");
fclose(fpout);
fpout=fopen("zh_ci","a");
Nonce_Str(fp);
strcpy(cc,dang_str);
fseek(fp,9L,1);
while(strcmp(dang_str,"end0")!=0)
{
a=1;
strcpy(cc,dang_str);
Nonce_Str(fp);
if(strcmp(cc,dang_str)!=0)
{
strcpy(zhandian[atoi(cc)].name,cc);
zhandian[atoi(cc)].n=a;
fprintf(fpout,"%s\t%d\n",cc,a);
a--;
}
fseek(fp,9L,1);
strcpy(cc,dang_str);
Nonce_Str(fp);
while(strcmp(cc,dang_str)==0)
{
a++;
fseek(fp,9L,1);
Nonce_Str(fp);
//strcpy(cc,dang_str);
}
fseek(fp,9L,1);
a++;
strcpy(zhandian[atoi(cc)].name,cc);
zhandian[atoi(cc)].n=a;
fprintf(fpout,"%s\t%d\n",cc,a);
}
for(int i=1;i<=3956;i++)
{
N=N+zhandian[i].n;
}
fclose(fp);
fclose(fpout);
//MinLu();
}
void main()
{
FILE *fp1,*fp2;
char cc[5];
char aa[5],bb[5];
char start[5],end[5];
int i,j,a=0,b=0;
int sige=0,sige1=0;
int ss1,ss2=0,q,w,e,r,qm,wm,o=0;
int n1,n2,m1,m2,m3;
char tm1[5],tm2[5];
///strcpy(start,"1954");
//strcpy(end,"2568");
//printf("請輸入要查詢的兩個站點:(每個站點四位數字,回車結束)\n");
printf("★★★★★★北京公交車查詢系統★★★★★★\n");
printf("●本系統只支持最多換乘2次 ●\n");
printf("●查詢結果中\"U\"表示上行,\"D\"表示下行, ●\n●\"H\"表示環形,接著三位數字是線路編號 ●\n");
printf("●\"S\"開頭的表示站點編號 ●\n");
printf("●輸入要查詢的兩個站點編號時 ●\n●每個站點用四位數字表示請勿加\"S\" ●\n");
printf("●●●●●●●●●●●●●●●●●●●●●\n");
printf("\n▲請輸入起始站點,回車結束!:");
scanf("%s",start);
printf("▲請輸入目的站點,回車結束!:");
scanf("%s",end);
printf("※請耐心等候!大約需要10秒鐘!\n");
fp1=fopen("E:\\zhandian","r");
fp2=fopen("E:\\checi","r");
hh();
for(i=1;i<=29885;i++)
{
fgets(stop[i].Stop_Name,5,fp1);
fseek(fp1,1L,1);
fgets(stop[i].Roadway_Name,5,fp1);
fseek(fp1,1L,1);
fgets(cc,3,fp1);
//fseek(fp1,1L,1);
stop[i].Roadway_No=atoi(cc);
fseek(fp1,2L,1);
}
for(i=1;i<=1040;i++)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -