Last active
May 18, 2020 02:58
-
-
Save dalcon10028/c7e983937b9fbb74fa9395d17f329ac4 to your computer and use it in GitHub Desktop.
자료구조실무 6주차
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /*********************************************************/ | |
| /* 판매량 검색프로그램 1.0 */ | |
| /* 2020년 4월 6 일 */ | |
| /*********************************************************/ | |
| #include <stdio.h> | |
| /* 첫번째 요소 : 4 지점(서울, 부산, 인천, 광주) | |
| 두번째 요소 : 3 품목(컴퓨터, 프린터, 스캐너) | |
| 세번째 요소 : 4 분기(1/4분기, 2/4분기, 3/4분기, 4/4분기 */ | |
| int sale[4][3][4] = { | |
| { { 10, 20, 15, 30 }, {5, 8, 40, 50}, { 26, 12, 18, 27 } }, | |
| { { 8, 22, 7, 3 }, {25, 23, 43, 20}, { 6, 13, 28, 17 } }, | |
| { { 5, 24, 16, 13 }, {15, 10, 5, 0}, { 46, 3, 6, 27 } }, | |
| { { 15, 29, 6, 23 }, {25, 8, 15, 20}, { 36, 23, 36, 21 } } | |
| }; | |
| char division[4][10] = { "서울", "부산", "인천", "광주" }; | |
| char product[3][10] = { "컴퓨터", "프린터", "스캐너" }; | |
| char quater[4][10] = { "1/4", "2/4", "3/4", "4/4" }; | |
| /* 함수를 미리정의 함으로써 함수의 위치를 자유롭게 할 수 있다 */ | |
| int menu(void); | |
| void all_sales(void), division_sales(void), product_sales(void), quater_sales(void); | |
| void separte_sales(void),division_ave_sales(void),update_sales(void); | |
| int main(void) { | |
| int choice; | |
| do { | |
| choice = menu(); /* 선택한 메뉴를 치환 */ | |
| switch(choice) { | |
| case 1: all_sales(); /* 전체 판매량 검색 */ | |
| break; | |
| case 2: division_sales(); /* 지점별 판매량 검색 */ | |
| break; | |
| case 3: product_sales(); /* 제품별 판매량 검색 */ | |
| break; | |
| case 4: quater_sales(); /* 분기별 판매량 검색 */ | |
| break; | |
| case 5: separte_sales(); /* 특정 지점, 특정 제품, 특정 분기에서 판매량 */ | |
| break; | |
| case 6: division_ave_sales(); /* 지점별 전체 제품에 대한 분기당 평균 판매량 */ | |
| break; | |
| case 7: update_sales(); /* 특정 지점, 특정 제품, 특정 분기에서 판매량 갱신 */ | |
| break; | |
| } | |
| printf("\n"); | |
| } while( choice!=8 ); | |
| } | |
| /* 사용자가 메뉴를 선택하여 선택한 번호를 반환하는 함수. */ | |
| int menu(void) { | |
| int i; | |
| printf("판매량 검색 프로그램\n"); | |
| printf("1.전체 판매량 검색\n"); | |
| printf("2.지점별 판매량 검색\n"); | |
| printf("3.제품별 판매량 검색\n"); | |
| printf("4.분기별 판매량 검색\n"); | |
| printf("5.지점별, 제품별, 분기별 판매량 검색\n"); | |
| printf("6.지점별 분기당 평균 판매량\n"); | |
| printf("7.판매량 갱신\n"); | |
| printf("8.종료\n"); | |
| do { | |
| printf("번호를 선택하세요: "); | |
| i = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("\n"); | |
| } while(i<1 || i>8); /* 1부터 5까지만 입력하게 함 */ | |
| return i; /* 사용자가 선택한 메뉴 번호를 반환 */ | |
| } | |
| void all_sales(void) { | |
| int i,j,k,sum=0; | |
| for ( i=0; i<4; i++ ) | |
| for ( j=0; j<3; j++ ) | |
| for ( k=0; k<4; k++ ) | |
| sum += sale[i][j][k]; | |
| printf("올해 판매한 전지점의 전체 제품수는 %d개 입니다\n",sum); | |
| } | |
| void division_sales(void) { | |
| int i,j,choice; | |
| int sum=0; | |
| /* 검색할 지점을 입력 */ | |
| printf("지점을 번호를 입력하세요(1.서울 2.부산 3.인천 4.광주): "); | |
| choice = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| choice--; /* 지점번호를 배열의 인덱스로 바꾼다 */ | |
| for ( i=0; i<3; i++ ) | |
| for ( j=0; j<4; j++ ) | |
| sum = sum + sale[choice][i][j]; | |
| printf("올해 %s 지점에서 판매한 전체 제품수는 %d개 입니다\n",division[choice],sum); | |
| } | |
| void product_sales(void) { | |
| int i,j,choice; | |
| int sum=0; | |
| /* 검색할 제품을 입력 */ | |
| printf("제품 번호를 입력하세요(1.컴퓨터 2.프린터 3.스캐너): "); | |
| choice = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| choice--; /* 제품번호를 배열의 인덱스로 바꾼다 */ | |
| for ( i=0; i<4; i++ ) | |
| for ( j=0; j<4; j++ ) | |
| sum += sale[i][choice][j]; | |
| printf("올해 %s 제품의 판매량 %d개 입니다\n",product[choice],sum); | |
| } | |
| void quater_sales(void) | |
| { | |
| /* 전체 지점에서 특정 분기에 판매된 전체 판매량 구하기 */ | |
| int i,j,choice; | |
| int sum=0; | |
| /* 검색할 분기를 입력 */ | |
| printf("분기를 입력하세요(1.1/4분기 2.2/4분기 3.3/4분기 4.4/4분기): "); | |
| choice = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| choice--; /* 분기를 배열의 인덱스로 바꾼다 */ | |
| for ( i=0; i<4; i++ ) | |
| for ( j=0; j<3; j++ ) | |
| sum += sale[i][j][choice]; | |
| printf("올해 %s 분기의 판매량 %d개 입니다\n",quater[choice],sum); | |
| } | |
| void separte_sales(void) { | |
| int choice[3]; // (지점, 제품, 분기) | |
| /* 특정 지점, 특정 제품, 특정 분기를 사용자에게 묻고 판매량 구하기 */ | |
| /* 검색할 특정 지점, 특정 제품, 특정 분기를 입력 */ | |
| printf("지점을 번호를 입력하세요(1.서울 2.부산 3.인천 4.광주): "); | |
| choice[0] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("제품 번호를 입력하세요(1.컴퓨터 2.프린터 3.스캐너): "); | |
| choice[1] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("분기를 입력하세요(1.1/4분기 2.2/4분기 3.3/4분기 4.4/4분기): "); | |
| choice[2] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| choice[0]--; choice[1]--; choice[2]--; /* 분기를 배열의 인덱스로 바꾼다 */ | |
| printf("올해 %s 지점 %s 제품 %s 분기의 판매량 %d개 입니다\n",division[choice[0]],product[choice[1]],quater[choice[2]],sale[choice[0]][choice[1]][choice[2]]); | |
| } | |
| void division_ave_sales(void) { | |
| /* 지점별 전체 제품에 대한 분기당 평균 판매량 */ | |
| int ave=0; // 평균 판매량 (서울, 부산, 인천, 광주) | |
| int i,j,k,choice; | |
| /* 검색할 지점을 입력 */ | |
| printf("지점을 번호를 입력하세요(1.서울 2.부산 3.인천 4.광주): "); | |
| choice = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| choice--; /* 지점번호를 배열의 인덱스로 바꾼다 */ | |
| for ( i=0; i<3; i++ ) | |
| for ( j=0; j<4; j++ ) | |
| ave += sale[choice][i][j]; | |
| ave/=4; | |
| printf("올해 %s 지점의 전체 제품에 대한 분기당 평균 판매량 %d개 입니다\n",division[choice],ave); | |
| } | |
| void update_sales(void) | |
| { | |
| int choice[4]; // (지점, 제품, 분기, 새로운 값) | |
| /* 특정 지점, 특정 제품, 특정 분기를 선택하게하고 현재 판매량을 출력후 | |
| 새로운 값을 입력 받고 갱신한다 */ | |
| /* 검색할 특정 지점, 특정 제품, 특정 분기를 입력 */ | |
| printf("지점을 번호를 입력하세요(1.서울 2.부산 3.인천 4.광주): "); | |
| choice[0] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("제품 번호를 입력하세요(1.컴퓨터 2.프린터 3.스캐너): "); | |
| choice[1] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("분기를 입력하세요(1.1/4분기 2.2/4분기 3.3/4분기 4.4/4분기): "); | |
| choice[2] = getchar()-'0'; /* 사용자가 입력한 아스키 문자를 정수로 저장 */ | |
| getchar(); | |
| printf("새로운 값을 입력하세요: "); | |
| scanf("%d", &choice[3]); | |
| sale[--choice[0]][--choice[1]][--choice[2]] = choice[3]; /* 새로운 값 갱신*/ | |
| getchar(); | |
| printf("올해 %s 지점 %s 제품 %s 분기의 판매량 %d개 입니다\n",division[choice[0]],product[choice[1]],quater[choice[2]],sale[choice[0]][choice[1]][choice[2]]); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment