Skip to content

Instantly share code, notes, and snippets.

@dalcon10028
Last active May 18, 2020 02:58
Show Gist options
  • Save dalcon10028/c7e983937b9fbb74fa9395d17f329ac4 to your computer and use it in GitHub Desktop.
Save dalcon10028/c7e983937b9fbb74fa9395d17f329ac4 to your computer and use it in GitHub Desktop.
자료구조실무 6주차
/*********************************************************/
/* 판매량 검색프로그램 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