2019-01-15

Hyeonu_Chun·2021년 6월 21일
0

HW33

#pragma warning(disable : 4996)
#include <stdio.h>

unsigned char menu(unsigned char);
unsigned char openFan(unsigned char);
unsigned char offFan(unsigned char);
unsigned char reverseFan(unsigned char);
void displayFan(unsigned char);
void myflush();

int main() {
	unsigned char data = 0;
	while (1) {
		data = menu(data);
		if (data == 0) break;
		displayFan(data);
	}
	return 0;
}

unsigned char menu(unsigned char data) {
	int num;
	while (1) {
		printf("1. 환풍구 열기 / 2. 환풍구 닫기 / 3. 환풍구 전체 전환 / 4. 종료 : ");
		scanf("%d", &num);
		if (getchar() == '\n') {
			switch (num) {
			case 1: data = openFan(data); return data;
			case 2: data = offFan(data); return data;
			case 3: data= reverseFan(data); return data;
			case 4: return 0;
			default: printf("* 잘못된 입력입니다.\n\n"); continue;
			}
		}
		printf("* 잘못된 입력입니다.\n\n");
		myflush();
	}
}

unsigned char openFan(unsigned char data) {
	int num;
	unsigned char compare = 1;
	printf("-------------------------------------------------------\n\t\tFan 열기 작업 실행 화면\n-------------------------------------------------------\n");
	while (1) {
		printf("* OPEN할 FAN 를 입력하시오(1-8) : ");
		scanf("%d", &num);
		if (getchar() == '\n') {
			if (num >= 1 && num <= 8) {
				compare = compare << unsigned char(num - 1);
				return (data | compare);
			}
			else {
				printf("* 잘못된 입력입니다.\n\n");
				continue;
			}
		}
		printf("* 잘못된 입력입니다.\n\n");
		myflush();
	}
}

unsigned char offFan(unsigned char data) {
	int num;
	unsigned char compare = 1;
	printf("-------------------------------------------------------\n\t\tFan 닫기 작업 실행 화면\n-------------------------------------------------------\n");
	while (1) {
		printf("* CLOSE할 FAN 를 입력하시오(1-8) : ");
		scanf("%d", &num);
		if (getchar() == '\n') {
			if (num >= 1 && num <= 8) {
				compare = compare << unsigned char(num - 1);
				return data ^ compare;
			}
			else {
				printf("* 잘못된 입력입니다.\n\n");
				continue;
			}
		}
		printf("* 잘못된 입력입니다.\n\n");
		myflush();
	}
}

unsigned char reverseFan(unsigned char data) {
	printf("-------------------------------------------------------\n\t\tFan 전체 전환 작업 실행 화면\n-------------------------------------------------------\n");
	printf("전체 FAN의 상태가 전환되었습니다. (ON, OFF 상태 뒤바뀜)\n");
	return ~data;
}

void displayFan(unsigned char data) {
	unsigned char compare = 0x80;
	printf("-------------------------------------------------------\n");
	for (int i = 8; i >= 1; i--) {
		printf("%d번FAN\t", i);
	}
	printf("\n");
	for (int i = 1; i <= 8;i++) {
		if ((data & compare) >= 1) {
			printf("   ON\t");
		}
		else printf("  OFF\t");
		compare = compare >> unsigned char(1);
	}
	printf("\n");
	printf("-------------------------------------------------------\n\n\n");
	return;
}

void myflush() {
	while (getchar() != '\n');
	return;
}

HW43

#pragma warning(disable : 4996)
#include <stdio.h>
#include <math.h>


int primeNumber(int);
void myflush();

int main() {
	int num, res;
	while (1) {
		int count = 0;
		printf("* 정수값 하나를 입력하시오 : ");
		scanf("%d", &num);
		if (getchar() == '\n') {
			if (num > 0) {
				for (int i = 1; i <= num; i++) {
					res = primeNumber(i);
					if (res == 1) {
						printf("%5d", i);
						count++;
						if ((count % 5) == 0) {
							printf("\n");
						}
					}
				}
				if ((count % 5) != 0) printf("\n");
				printf("1~%d까지의 총 소수는 %d개 입니다.\n\n", num, count);
				continue;
			}
		}
		printf("* 잘못된 입력입니다.\n\n");
		myflush();
	}
	return 0;
}

int primeNumber(int number) {
	int num = int(sqrt(number));
	if (number != 1) {
		for (int i = 2; i <= num; i++) {
			if (number % i == 0) {
				return 0;
			}
		}
		return 1;
	}
	else return 0;
}

void myflush() {
	while (getchar() != '\n');
	return;
}
profile
Stay hungry, stay foolish

0개의 댓글