U E D R , A S I H C RSS

새싹교실/2014/속도위반/0502 (rev. 1.11)

새싹교실/2014/속도위반/0502


1. 진행사항

  • 참여자
    튜터 최다인 참석
    튜티 유재범 참석
    오영은 참석
    장우진 참석
    태현 참석
  • 메모리 구조 간단 설명
  • 포인터와 배열
    • 주소값
    • 할당에 대한 간단한 이야기
  • Call-by-Value / Call-by-Reference

☆ 수업 PPT 파일 : https://drive.google.com/file/d/0By2npLlzwRQAZmp6T05FUDhldW8/edit?usp=sharing
  • 다음 수업 : 5월 16일 금요일 오후 6시

2. 과제

  • 초간단☆ 지하철 노선도 만들기
    • 3호선과 9호선만 만들면 됨
    • 노선도 출력은 필요하지 않음.
    • 출발역과 도착역을 입력받아 걸리는 시간을 계산한다.
      • 이 때, 3호선의 역간거리는 4분, 9호선의 역간거리는 2분으로 통일한다.
      • 환승을 할 경우, 환승여부를 알려주어야 하며 환승에 걸리는 시간은 3분이다.

  • 배열에 대한 질문은 일단 구글링을 해 본 후, 막막하면 튜터에게 개인적으로 물어보세요.

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. 오영은


2.3. 장우진


2.4. 문태현

3. 후기



도위반
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:53
Processing time 0.0279 sec