2. 과제 ¶
- 초간단☆ 지하철 노선도 만들기
- 3호선과 9호선만 만들면 됨
- 노선도 출력은 필요하지 않음.
- 출발역과 도착역을 입력받아 걸리는 시간을 계산한다.
- 이 때, 3호선의 역간거리는 4분, 9호선의 역간거리는 2분으로 통일한다.
- 환승을 할 경우, 환승여부를 알려주어야 하며 환승에 걸리는 시간은 3분이다.
- 이 때, 3호선의 역간거리는 4분, 9호선의 역간거리는 2분으로 통일한다.
- 3호선과 9호선만 만들면 됨
- 배열에 대한 질문은 일단 구글링을 해 본 후, 막막하면 튜터에게 개인적으로 물어보세요.
2.1. 유재범 ¶
#include <stdio.h> #pragma warning(disable : 4996) #include <math.h> #include <string.h> int main(void) { char * linethree[42] = {"대화", "주엽", "정발산", "마두", "백석", "대곡", "화정", "원당", "삼송", "지축", "구파발", "연신내", "불광", "녹번", "홍제", "무악재", "독립문", "경복궁", "안국", "종로3가", "을지로3가", "동대입구역", "약수", "금호", "옥수", "압구정", "신사", "잠원", "고속터미널", "교대", "남부터미널", "양재", "매봉", "도곡", "대치", "학여울", "대청", "일원", "수서", "가락시장", "경찰병원", "오금"}; char * linenine[24] = {"개화", "김포공항", "공항시장", "신방화", "양천향교", "가양", "증미", "등촌", "염창", "신목동", "선유도", "당산", "국회의사당", "여의도", "샛강", "노량진", "노들", "흑석", "동작", "구반포", "신반포", "고속터미널", "사평", "신논현"}; char start[20] = {0,}; char finish[20] = {0, }; int termnine=0, termthree=0, linecheck1=0, linecheck2=0, searchcount1=0, searchcount2=0, searchnum1=10, searchnum2=10, casee=0; //linethree[] : 3호선 노선도 //linenine[] : 9호선 노선도 //start[] : 출발역 입력 //finish[] : 도착역 입력 //termnine : 9호선 이동 역 수 //termthree : 3호선 이동 역 수 //linecheck1 : 출발역 지하철 노선 확인 //linecheck2 : 도착역 지하철 노선 확인 //searchcount1, searchcount2 : 출발역, 도착역 검색 확인 //searchnum1, searchnum2 : 출발역, 도착역 비교 검색 printf("출발 역을 입력하시오 : "); scanf("%s", start); printf("도착 역을 입력하시오 : "); scanf("%s", finish); while(searchnum1 !=0)//출발역 3호선인지 검사 { searchnum1 = strcmp(linethree[searchcount1], start); searchcount1 ++; if(searchnum1 == 0) linecheck1=3; if (searchcount1==41) break; } if (searchcount1==41)//출발역 9호선인지 검사 { searchcount1 = 0; while(searchnum1 !=0) { searchnum1 = strcmp(linenine[searchcount1], start); searchcount1 ++; if(searchnum1 == 0) linecheck1=9; } } while(searchnum2 !=0)//도착역 3호선인지 검사 { searchnum2 = strcmp(linethree[searchcount2], finish); linecheck2=3; searchcount2 ++; if(searchcount2 == 41) break; } if(searchcount2==41)//도착역 9호선인지 검사 { searchcount2 = 0; while(searchnum2 !=0) { searchnum2 = strcmp(linenine[searchcount2], finish); linecheck2=9; searchcount2 ++; } } if((linecheck1 == linecheck2) && (linecheck1==3))//출발역 도착역 3호선 위치 { termthree = abs((&linethree[searchcount1]) - (&linethree[searchcount2])); printf("출발역 : %s\n도착역 : %s\n걸리는 시간 : %d시간 %d분\n", linethree[(searchcount1)-1], linethree[(searchcount2-1)], (termthree/15), ((4*termthree)%60)); } else if((linecheck1 == linecheck2) && (linecheck1==9))//출발역 도착역 9호선 위치 { termnine = abs((&linenine[searchcount1]) - (&linenine[searchcount2])); printf("출발역 : %s\n도착역 : %s\n걸리는 시간 : %d시간 %d분\n", linenine[(searchcount1 - 1)], linenine[(searchcount2 - 1)], (2*termnine/60), ((2*termnine)%60)); } else if((linecheck1 != linecheck2) && (linecheck1==3))//출발역 3호선, 도착역 9호선 위치 { termthree = abs((&linethree[searchcount1]) - (&linethree[28])-1); termnine = abs((&linenine[21]) - (&linenine[searchcount2])-1); printf("출발역 : %s\n환승역 : %s\n도착역 : %s\n걸리는 시간 : %d시간 %d분\n", linethree[(searchcount1 - 1)], linethree[28], linenine[(searchcount2 - 1)], (((4*termthree)+(2*termnine)+3)/60), (((4*termthree)+(2*termnine)+3)%60)); } else if((linecheck1 != linecheck2) && (linecheck1==9))//출발역 9호선, 도착역 3호선 위치 { termnine = abs((&linenine[searchcount1]) - (&linenine[21])-1); termthree = abs((&linethree[28]) - (&linethree[searchcount2])-1); printf("출발역 : %s\n환승역 : %s\n도착역 : %s\n걸리는 시간 : %d시간 %d분\n", linenine[(searchcount1 - 1)], linenine[21], linethree[(searchcount2 - 1)], (((4*termthree)+(2*termnine)+3)/60), (((4*termthree)+(2*termnine)+3)%60)); } return 0; }
미친듯한 3호선과 9호선 배열
함수 따위 쓰지 않는 屛身같은 코드.
왠지 모르겠지만 중간에 오차가 가끔 발생한다.(정말이지 왜 그런지 모르겠습니다. 고터 다음 배열부분이 출발 지역일 때 오차가 납니다.
2.2. 오영은 ¶
#include<stdio.h> #include<string.h> char * line3[42] = {"대화", "주엽", "정발산", "마두", "백석", "대곡", "화정", "원당", "삼송", "지축", "구파발", "연신내", "불광", "녹번", "홍제", "무악재", "독립문", "경복궁", "안국", "종로3가", "을지로3가", "동대입구역", "약수", "금호", "옥수", "압구정", "신사", "잠원", "고속터미널", "교대", "남부터미널", "양재", "매봉", "도곡", "대치", "학여울", "대청", "일원", "수서", "가락시장", "경찰병원", "오금"}; char * line9[24] = {"개화", "김포공항", "공항시장", "신방화", "양천향교", "가양", "증미", "등촌", "염창", "신목동", "선유도", "당산", "국회의사당", "여의도", "샛강", "노량진", "노들", "흑석", "동작", "구반포", "신반포", "고속터미널", "사평", "신논현"}; char start[10], finish[10]; int three_s=0, nine_s=0, three_f=0, nine_f=0, threeloop_s=1, nineloop_s=1, threeloop_f=1, nineloop_f=1, totaltime=0; int woojinbabo(); int jaebumbabo(); int main() { printf("출발역을 입력해주세요 : "); scanf("%s", &start); printf("도착역을 입력해주세요 : "); scanf("%s", &finish); while(three_s<42) { threeloop_s=strcmp(line3[three_s], start); three_s++; if(threeloop_s==0) { break; } } while(nine_s<24) { nineloop_s=strcmp(line9[nine_s], start); nine_s++; if(nineloop_s==0) { break; } } while(three_f<42) { threeloop_f=strcmp(line3[three_f], finish); three_f++; if(threeloop_f==0) { break; } } while(nine_f<24) { nineloop_f=strcmp(line9[nine_f], finish); nine_f++; if(nineloop_f==0) { break; } } if(threeloop_s==0 && nineloop_s!=0 && threeloop_f==0 && nineloop_f!=0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } if(threeloop_s==0 && nineloop_s!=0 && threeloop_f!=0 && nineloop_f==0) { totaltime=abs(29-three_s)*2+3+abs(22-nine_f)*2; woojinbabo(); } if(threeloop_s!=0 && nineloop_s==0 && threeloop_f==0 && nineloop_f!=0) { totaltime=abs(22-nine_s)*2+3+abs(29-three_f)*2; woojinbabo(); } if(threeloop_s!=0 && nineloop_s==0 && threeloop_f!=0 && nineloop_f==0) { totaltime=abs(nine_s-nine_f)*2; jaebumbabo(); } if(threeloop_s==0 && nineloop_s==0 && threeloop_f==0 && nineloop_f==0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } if(threeloop_s==0 && nineloop_s==0 && threeloop_f!=0 && nineloop_f==0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } if(threeloop_s==0 && nineloop_s==0 && threeloop_f==0 && nineloop_f!=0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } if(threeloop_s!=0 && nineloop_s==0 && threeloop_f==0 && nineloop_f==0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } if(threeloop_s==0 && nineloop_s!=0 && threeloop_f==0 && nineloop_f==0) { totaltime=abs(three_s-three_f)*2; jaebumbabo(); } return 0; } int woojinbabo() { printf("\n출발역 : %s\t도착역 : %s\n", start, finish); printf("총 소요 시간 : %d분\n", abs(totaltime)); printf("환승역 : 고속터미널\n"); } int jaebumbabo() { printf("\n출발역 : %s\t도착역 : %s\n", start, finish); printf("총 소요 시간 : %d분\n", abs(totaltime)); }
좀더 꾸미고 싶은데 귀찮아서 안할래요... 맨처음 지하철역 쓰기도 귀찮아서 재범이가 써놓은거 긁어왔습니다. 재범찡 감사.
p.s.함수 이름에 신경쓰면 지는 겁니다. 아. 숨쉬기도 귀찮다.
p.s.함수 이름에 신경쓰면 지는 겁니다. 아. 숨쉬기도 귀찮다.
2.3. 장우진 ¶
#include<stdio.h> #include<string.h> #include<math.h> #include<windows.h> int main() { char * subway3[42] = {"대화", "주엽", "정발산", "마두", "백석", "대곡", "화정", "원당", "삼송", "지축", "구파발", "연신내", "불광", "녹번", "홍제", "무악재", "독립문", "경복궁", "안국", "종로3가", "을지로3가", "동대입구역", "약수", "금호", "옥수", "압구정", "신사", "잠원", "고속터미널", "교대", "남부터미널", "양재", "매봉", "도곡", "대치", "학여울", "대청", "일원", "수서", "가락시장", "경찰병원", "오금"}; char * subway9[24] = {"개화", "김포공항", "공항시장", "신방화", "양천향교", "가양", "증미", "등촌", "염창", "신목동", "선유도", "당산", "국회의사당", "여의도", "샛강", "노량진", "노들", "흑석", "동작", "구반포", "신반포", "고속터미널", "사평", "신논현"}; char start[20],end[20]; int check=1,i=0,j=0,m=0,n=0; int time=0; printf("출발하실 역을 입력해주세요 : "); scanf("%s",&start); printf("도착하실 역을 입력해주세요 : "); scanf("%s",&end); for(i=0;check!=0;i++)//출발역 3or9호선 { check=strcmp(start,subway3[i]); if(i>=41) { i+=5; for(j=0;check!=0;j++) { check=strcmp(start,subway9[j]); } } } i--; j--; check=1; for(m=0;check!=0;m++)//출발역 3or9호선 { check=strcmp(end,subway3[m]); if(m>=41) { m+=5; for(n=0;check!=0;n++) { check=strcmp(end,subway9[n]); } } } n--; m--; if((i<=42&&m<=42)&&(i!=28&&m!=28)) { time=abs(i-m)*4; } else if((i>42&&m<=42)&&(i!=28&&m!=28)) { time=(abs(j-21)*4+abs(28-m)*2)+3; printf("환승입니다.\n"); } else if((i<=42&&m>42)&&(i!=28&&m!=28)) { time=(abs(i-28)*4+abs(n-21)*2)+3; printf("환승입니다.\n"); } else if((i>42&&m>42)&&(i!=28&&m!=28)) { time=abs(n-j)*2; } else if(i==28&&m<=42) time=abs(28-m)*4; else if(i==28&&m>42) time=abs(21-n)*2; else if(i<=42&&m==28) time=abs(28-i)*4; else time=abs(21-j)*2; printf("총 소요 시간은 %d분입니다.\n",time); return 0; }