웹_프론트_백엔드/단과

[단과_C] 2020.02.27

shine94 2020. 2. 27. 22:41

1. 오늘 실습코드

1) boss.c  

#include<stdio.h>
#define R 3
#define C 2

void main(){
	//강남점 (일반 키즈)
	//신촌점 (일반 키즈)
	//홍대점 (일반 키즈)

	//각 지점별 매출액 저장소(2차원 배열 3행 2열)
	int arrIncome[R][C] = { 0, };

	//지점 명칭에 규칙성 부여
	//포인터자료형 앞에 const는 참조상수
	//포인터명 앞에 const는 상수
	char arBranchName[R][100] = { "강남점","신촌점","홍대점" };		//수정 가능
	//const char* arBranchName[R] = { "강남점", "신촌점","홍대점" };	//수정 불가능

	//연령별 명칭에 규칙성 부여
	char arAgeName[C][100] = { "일반점", "키즈점" };

	//지점별 총 매출액 저장소
	int arBranchTotal[R] = { 0, };
	//지점별 평균 매출액 저장소
	double arBranchAvg[R] = { 0.0, };

	//연령별 총 매출액 저장소
	int arAgeTotal[C] = { 0, };
	//연령별 평균 매출액 저장소
	double arAgeAvg[C] = { 0.0, };

	//전체 총 매출액
	int total = 0;
	//전체 평균 매출액
	double avg = 0.0;

	//인센티브 매장 Flag(1byte)
	char check = '0';

	//지점 개수만큼 반복(강남, 홍대, 신촌)
	for (int i = 0; i < R; i++) {
		//연령별 지점 개수만큼 반복(일반, 키즈)
		for (int j = 0; j < C; j++) {
			//강남점 일반점 매출액 입력
			//강남점 키즈점 매출액 입력...
			printf("%s %s 매출액 입력(단위 : 만원)\n", arBranchName[i], arAgeName[j]);
			scanf_s("%d", arrIncome[i]+j);

			//지점별 총 매출액 누적
			arBranchTotal[i] += arrIncome[i][j];
			//연령별 총 매출액 누적
			arAgeTotal[j] += arrIncome[i][j];
			//전체 매출액 누적
			total += arrIncome[i][j];
		}
		//하나의 지점 매출액 입력이 끝나는 영역
		//지점별 평균 매출액 저장(지점은 2개의 값이 더해진다(일반점, 키즈점)
		//따라서 2로 나누어준다.
		arBranchAvg[i] = (double)arBranchTotal[i] / C;
	}
	//모든 지점 매출액 입력이 끝나는 영역
	for (int i = 0; i < C; i++) {
		//연령별 평균 매출액 저장(연령은 3개의 값이 더해진다(강남, 홍대, 신촌)
		//따라서 3으로 나누어준다.
		arAgeAvg[i] = (arAgeTotal[i] + 0.0) / R;
	}

	//전체 평균 매출엑 저장(총 6개 매장)
	avg = (double)total / (C * R);

	//지점 매출액 관련 메세지 출력
	for (int i = 0; i < R; i++) {
		printf("%s 총 매출액 : %d만원\n", arBranchName[i], arBranchTotal[i]);
		printf("%s 평균 매출액 : %.2lf만원\n", arBranchName[i], arBranchAvg[i]);
	}
	//연령 매출액 관련 메세지 출력
	for (int i = 0; i < C; i++) {
		printf("%s 총 매출액 : %d만원\n", arAgeName[i], arAgeTotal[i]);
		printf("%s 평균 매출액 : %.2lf만원\n", arAgeName[i], arAgeAvg[i]);
	}
	//전체 매출액 관련 메세지 출력
	printf("나이키 총 매출액 : %d만원\n", total);
	printf("나이키 평균 매출액 : %.2lf만원\n", avg);

	//인센티브 매장
	printf("★인센티브 매장★\n");
	for (int i = 0; i < R; i++) {
		for (int j = 0; j < C; j++) {
			//각 매장 매출액 모두 평균과 비교
			//전체 평균보다 높은 매출액 매장 출력
			if (arrIncome[i][j] > avg) {
				printf("%s %s\n", arBranchName[i], arAgeName[j]);
				//하나의 매장이라도 있다면 check를 '1'로 변경
				check = '1';
			}
		}
	}
	//문자를 정수로 변경(-48)하면 0 또는 1이 나온다.
	if (!(check - 48)) {
		//위의 for문에서 if문에 한 번도 들어가지 않았다면(check가 '0'이면)
		//"없습니다." 출력
		printf("없습니다.\n");
	}
}

 

2) cafe.c

** 아직 완성된 코드 아님, 다음 시간에 완성할 예정 **

#include<stdio.h>
#include<string.h>
#define CNT 100
void main() {
	//추가, 수정, 삭제, 검색, 목록
	//상품명-가격
	//twosome place
	char title[20] = "♨Twosome place♨";
	char menu[100] = "①추가하기\n②수정하기\n③삭제하기\n④검색하기\n⑤목록보기\n⑥나가기\n";
	char errMsg[20] = "다시 시도해주세요.";
	
	//사용자가 입력한 상품명을 임시로 저장할 공간
	char temp[100] = { "", };

	//상품명을 저장할 문자열 배열
	char arName[CNT][100] = { "", };
	//상품 가격을 저장할 정수 배열
	int arPrice[CNT] = { 0, };

	int choice = 0;
	//추가한 상품의 총 개수
	int insertCnt = 0;

	//for문 밖에서도 i를 사용해야하므로 여기에 i를 선언
	int i = 0;

	while (1) {
		printf("%s\n%s", title, menu);
		scanf_s("%d", &choice);

		if (choice == 6) { break; }

		switch (choice) {
		//추가
		case 1:
			printf("상품명 : ");
			scanf_s("%s", temp, sizeof(temp));

			//만약 상품이 한 개도 없다면 중복검사를 할 필요가 없다.
			if (insertCnt != 0) {
				//상품이 하나라도 있다면 들어옴
				//추가된 상품개수만큼 반복
				for (i = 0; i < insertCnt; i++) {
					//사용자가 추가할 상품명과 일치하는 상품명이 존재하면 break
					if (!strcmp(arName[i], temp)) {
						break;
					}
				}
			}
			//위에서 break를 만났다는 것은 중복된 상품이 있다는 뜻!
			//따라서 i가 insertCnt까지 증가하기 위해서는 중복이 없어야 한다.
			if (i == insertCnt) {
				//중복이 없으면 들어옴
				printf("가격 : ");
				scanf_s("%d", arPrice + insertCnt);
				strcpy_s(arName[insertCnt], sizeof(arName[insertCnt]), temp);
				//추가 완료시 총 상품개수 1증가
				insertCnt++;
			}
			else {
				printf("중복된 상품명입니다.\n");
			}
			break;
		//수정
		case 2:
			break;
		//삭제
		case 3:
			printf("삭제할 상품명 : ");
			scanf_s("%s", temp, sizeof(temp));

			//총 상품개수만큼 반복
			for (i = 0; i < insertCnt; i++) {
				//삭제할 상품이 있는지 검사
				if (!strcmp(temp, arName[i])) {
					//삭제할 상품이 있다면 그 상품행에 다음 행을 덮어씌운다.
					//insertCnt번째방까지 반복한다.
					for (int j = i ; j < insertCnt ; j++) {
						//상품명 삭제
						strcpy_s(arName[i], sizeof(arName[i]), arName[i + 1]);
						//가격 삭제
						arPrice[i] = arPrice[i + 1];
					}
					//삭제 완료 후 총 상품 개수 1감소
					insertCnt--;
					break;
				}
			}
			//삭제할 상품이 없다면 오류 메세지 출력
			if (i == insertCnt) {
				printf("삭제하실 상품이 존재하지 않습니다.\n");
			}
			break;
		//검색
		case 4:
			break;
		//목록
		case 5:
			//만약 총 상품개수가 0개라면 "목록 없음"이 출력되고
			//1개라도 있다면 "상품명(가격)"이 출력된다.
			strcpy_s(temp, sizeof(temp), insertCnt == 0 ? "목록 없음" : "상품명(가격)");
			printf("%s\n", temp);
			for (i = 0; i < insertCnt; i++) {
				//총 상품 개수만큼 순서대로 출력
				printf("%s(%d원)\n", arName[i], arPrice[i]);
			}
			break;
		//그 외
		default:
			printf("%s", errMsg);
		}
	}
}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_C] 2020.03.13  (0) 2020.03.15
[단과_C] 2020.03.12  (0) 2020.03.13
[단과_C] 2020.02.26  (0) 2020.02.27
[단과_C] 2020.02.25  (0) 2020.02.26
[단과_JAVA] 2020.02.25  (0) 2020.02.26