C 7

동적할당 예제 - 2차원 행렬의 덧셈

#include #include //2차원 행렬 연산에 필요한 //할당과 반납함수의 작성 및 시험 // 2차원 행렬의 덧셈 int **imatrix(int rows, int columns); void free_imatrix(int **a, int nrows); void mat_add(int **A, int **B, int **C, int rows,int columns); void prt_mat(int **A, int rows, int columns); void get_input(int **matrix, int rows, int columns); int main(int argc,char *argv[]) { int **A, **B, **C; int m,n,p; printf("Type A matrix's si..

C 2024.02.10

두 수 계산기(매개변수로 입력 받기)

입력 예시1 : 1 2 * -> 2 입력 예시2 : 5 2 - -> 3 #include #include #include int main(int argc,char *argv[]) { double result = 0; /* 덧셈 */ if(strcmp(argv[3],"+")==0) //strcmp : 두 문자열 비교해서 같으면 0 result = atof(argv[1]) + atof(argv[2]); /* 뺄셈 */ else if(strcmp(argv[3],"-")==0) result = atof(argv[1]) - atof(argv[2]); /* 곱셈 */ else if(strcmp(argv[3],"*")==0) result = atof(argv[1]) * atof(argv[2]); /* 나눗셈 */ el..

C 2024.02.10

두 점을 받고 둘레와 면적 구하기

#include struct point { int x; int y; }; struct rect { struct point p1; struct point p2; }; int main(void) { struct rect r; int w, h, area, peri; printf("왼쪽 상단의 좌표를 입력하시오: "); scanf("%d %d", &r.p1.x, &r.p1.y); printf("오른쪽 상단의 좌표를 입력하시오: "); scanf("%d %d", &r.p2.x, &r.p2.y); w = r.p2.x - r.p1.x; h = r.p2.y - r.p1.y; area = w * h; peri = 2 * w + 2 * h; printf("면적은 %d이고 둘레는 %d입니다.\n", area, peri); ..

C 2024.02.10

천인국 C Express 3판 - 10장 17번 문제(보물찾기)

17. 간단한 텍스트 기반의 게임을 작성해보자. 보드의 크기는 20*10이다. 주은공은 ‘#’로 표시되어 있다. 주인공이 금 ‘G’를 찾으면 게임이 종료된다. 중간에 몬스터 ‘M’가 있어서 금을 찾는 것을 방해한다. 주인공은 ‘w’, ‘s’, ‘a’, ‘d’ 키를 이용하여 상하좌우로 움직일 수 있다. 몬스터는 랜덤하게 움직이는 것으로 하라. #include #include #include void flush(void) //getchar 버퍼 비워주는 함수 { while (getchar() != '\n'); } int main(void) { char board[20][10]; int character[2]; int monster1[2]; int monster2[2]; int gold[2]; srand(ti..

C 2024.02.10

천인국 C Express 3판 - 10장 15번 문제(random work)

15. 수학에서의 “random wolk”라 불리우는 문제를 프로그래밍 하여보자. 술에 취한 딱정벌래가 10*10 크기의 타일 위에 있다. 딱정벌레는 임의의(랜덤) 위치를 선택하여 여기저기 걸어다닌다. 현재의 위치에서 인접한 8개의 타일로 걸어나는 확률은 동일하다고 가정하자. 딱정벌레가 이동하는 경로를 다음과 같이 표시하여라. #include #include #include int main(void) { int tile[10][10] = { 0, }; //타일 크기 10x10 int number = 0; //랜덤 int bug[2] = { 5, 5 }; //벌레 위치 {row,col} [0]은 row축, [1]은 col축 int flag = 0; srand(time(0)); int cnt = 0, row..

C 2024.02.10

데이터 통신 - 바이트스터핑 구현(C)

아스키 코드를 보면 아래 그림과 같이 STX, ETX와 같은 특정 문자들을 사용하는 것을 알 수 있다. 바이트 스터핑이란 특정 문자가 실제 데이터 몸체에서도 동일 문자가 나오는 것을 방지하기 위해 송식 측에서 우연히 나타나는 DLE 문자 바로 직전에 여분의 DLE를 삽입하여 구분시키는 것을 말한다. 예를 들어 ASCII코드 1B와 7E 값을 가지는 통신 제어 문자가 있다 가정했을 때, 데이터에 우연히 1B 혹은 7E가 들어갔을 때 이게 제어 문자로서 1B(or 7E)인지 그냥 데이터로서 1B인지 알 수 없으므로 앞에 1B를 추가시켜서 구분시키는 것이다. 아래 그림 속 예제를 보면 알 수 있는데, 데이터(D)를 보면, 데이터 속에 7E와 1B가 들어가 있다. 이처럼 데이터 속에 통신 제어 문자와 동일한 문..

C 2024.02.10