Search

C언어 과제 3

cal.c

#include <stdio.h> int add(int value1, int value2) // 더하기 함수 정의 { return value1 + value2; } int sub(int value1, int value2) // 빼기 함수 정의 { return value1 - value2; } int mul(int value1, int value2) // 곱하기 함수 정의 { return value1 * value2; } int div(int value1, int value2) // 나누기 함수 정의 { return value1 / value2; } int main(void) { int num1, num2; char opt; printf("첫번째 숫자를 입력하세요 : "); scanf("%d", &num1); // 숫자를 입력 받음 getchar(); // 스트림 비우기 printf("수행할 동작을 입력하세요(+, -, x, /) : "); scanf("%c", &opt); // 동작(문자)을 입력받음 getchar(); // 스트림 비우기 printf("두번째 숫자를 입력하세요 : "); scanf("%d", &num2); // 숫자를 입력받음 switch (opt) // 입력한 동작에 따라 연산 수행 및 출력 { case '+': printf("%d %c %d = %d", num1, opt, num2, add(num1, num2)); break; case '-': printf("%d %c %d = %d", num1, opt, num2, sub(num1, num2)); break; case 'x': printf("%d %c %d = %d", num1, opt, num2, mul(num1, num2)); break; case '/': printf("%d %c %d = %d", num1, opt, num2, div(num1, num2)); break; }
C
복사

결과

mine.c

#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { printf("지뢰찾기 게임 시작\n\n"); int x, y; // x, y 좌표로 사용할 변수 선언 int ix, iy; // 유저가 입력한 x, y 좌표를 저장할 변수 선언 int arr[10][10] = {0}; // 10*10 배열 생성 및 내용 초기화 srand((unsigned int)time(NULL)); // 시간으로 시드값 설정 int count = 0; // 카운트 할 변수 int mine = 10; // 지뢰 갯수 선언 while (count < mine) // 0~9 까지 반복하며 지뢰 10개 설치 { int x = rand() % 10; // 0~9 까지 랜덤 값 추출 int y = rand() % 10; // 0~9 까지 랜덤 값 추출 if (arr[x][y] >= 0) { arr[x][y] = -100; // 지뢰가 설치되는 좌표의 값은 -100 arr[x - 1][y - 1] += 1; // 지뢰가 설치된 좌표 기준으로 8칸은 +1 arr[x][y - 1] += 1; arr[x][y + 1] += 1; arr[x + 1][y + 1] += 1; arr[x - 1][y] += 1; arr[x - 1][y + 1] += 1; arr[x + 1][y] += 1; arr[x + 1][y - 1] += 1; count++; // 카운트 증가 } } for (x = 0; x < 10; x++) // 10번 반복 { for (y = 0; y < 10; y++) // 10번 반복 { printf("%d\t", arr[x][y]); // 지뢰판 출력 } printf("\n"); } printf("\n\n"); while(1) { printf("좌표를 입력하세요 : x y"); // 좌표 입력 scanf("%d %d", &ix, &iy); if (arr[ix][iy] < 0) { printf("게임에 패배하셨습니다"); // 입력한 좌표가 음수면 패배 break; } } }
C
복사

결과

문제점

배열 인덱스가 0 인 부분에 의도하지 않은 +1 값이 들어가는 경우가 있음 (x, y 축 동일)
arr[0-1] 같은 경우 실행하지 않는 예외처리가 필요함
지뢰를 -100으로 설정하는 것에 대한 고민 필요 (다른 방법이 있을듯함)
선택한 곳이 지뢰가 아닐 경우 주변 8칸이 오픈되는 기능 필요
해당 기능이 구현되지 않아서 ‘ㅁ’ 등 판 형태로 출력하지 않고 숫자를 그대로 출력하도록 했습니다