[[TableOfContents]] = 진행사항 = * 참여자 || 튜터 || [최다인] || 참석 || || 튜티 || [유재범] || 참석 || || || [오영은] || 참석 || || || [장우진] || 참석 || || || [문태현] || 참석 || * 메모리 구조 간단 설명 * 포인터와 배열 * 주소값 * 할당에 대한 간단한 이야기 * Call-by-Value / Call-by-Reference {{{#!html ☆ 수업 PPT 파일 : https://drive.google.com/file/d/0By2npLlzwRQAZmp6T05FUDhldW8/edit?usp=sharing }}} * 다음 수업 : 5월 16일 금요일 오후 6시 = 과제 = * 초간단☆ 지하철 노선도 만들기 * 3호선과 9호선만 만들면 됨 * 노선도 출력은 필요하지 않음. * 출발역과 도착역을 입력받아 걸리는 시간을 계산한다. * 이 때, 3호선의 역간거리는 4분, 9호선의 역간거리는 2분으로 통일한다. * 환승을 할 경우, 환승여부를 알려주어야 하며 환승에 걸리는 시간은 3분이다. * 배열에 대한 질문은 일단 구글링을 해 본 후, 막막하면 튜터에게 개인적으로 물어보세요. == 유재범 == {{{ #include #pragma warning(disable : 4996) #include #include 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호선 배열 함수 따위 쓰지 않는 屛身같은 코드. 왠지 모르겠지만 중간에 오차가 가끔 발생한다.(정말이지 왜 그런지 모르겠습니다. 고터 다음 배열부분이 출발 지역일 때 오차가 납니다. == 오영은 == {{{ #include #include 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.함수 이름에 신경쓰면 지는 겁니다. 아. 숨쉬기도 귀찮다. == 장우진 == {{{ #include #include #include #include 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; } }}} == 문태현 == {{{ }}} = 후기 = ----- [:새싹교실/2014/속도위반 속도위반]