[[TableOfContents]] = 예정 = * 다음 주(6/6) : 현충일 * 어쩔까요? * 다다음 주(6/13) : 시험대비 특강 * 1학기 종료 후 * 1안 : 여름방학때 한다. * 2안 : 2학기에 한다. * 3안 : 이대로 안녕한다. * 오늘은 실습날 * #1 : 배열 뒤집기 * 작성 후 위키에 올려주세요. * 입력 : * line 1 : 배열의 크기( 0 < N <= 1,000,000) * line 2 ~ N + 1 : 배열에 들어갈 값(자연수, < 1,000,000) * 출력 : line N + 1 ~ line 2의 값 * tip : * N번보다 적게 볼 수도 있다. * (이 문제에서는)배열을 뒤집지 않아도 된다. * #2 : 정사각 행렬곱 함수 작성 * N * N 행렬을 곱한 결과를 반환하는 '''함수''' 작성 * int** matrix_mul(int **s, int **t, int N); * #3 : qsort 써보기 * void qsort(void* base, size_t n, size_t size, int (*comp)(void*, void*)); //에 있는 표준 함수 * 입력 : * line 1 : 정렬 할 수의 개수 ( 0 < N <= 1,000,000) * line 2 ~ : 정렬 할 수 (양의 정수, < 1,000,000) * 출력 : 정렬 된 N개의 수 * tip : * 좋은 정렬법을 아시면 직접 짜보세요! * '''좋은''' 정렬법! = 실습 = * #2 테스트 코드 {{{ #include #include int** matrix_mul(int **s, int **t, int N); int main(int argc, char** argv){ int A[3][3] = { {1, 1, 2}, {1, 0, 1}, {0, 3, 0} }; int B[3][3] = { {2, 1, 3}, {1, 3, 2}, {1, 2, 0} }; int *parr_A[3] = {A[0], A[1], A[2]}; int *parr_B[3] = {B[0], B[1], B[2]}; int **AB = (void*)0; int i, j, N = 3; printf("A : \n"); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ printf("%d ", A[i][j]); } printf("\n"); } printf("B : \n"); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ printf("%d ", B[i][j]); } printf("\n"); } AB = matrix_mul(parr_A, parr_B, N); if(AB){ printf("A x B : \n"); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ printf("%d ", AB[i][j]); } printf("\n"); } } return 0; } int** matrix_mul(int **s, int **t, int N){ //여기 작성 } }}} * 안재형 * #1 {{{ #include int main(void) { int *i = (int *)malloc(sizeof(int) * 1000000); int *count_i = (int *)malloc(sizeof(int) * 1000000); int input; scanf("%d", &input); for (int sentinel = 0; sentinel < input; sentinel++) { scanf("%d", &i[sentinel]); } for (int sentinel = 0; sentinel < input; sentinel++) { count_i[sentinel] = i[input - sentinel - 1]; } for (int sentinel = 0; sentinel < input; sentinel++) { printf("%d ", count_i[sentinel]); } printf("\n"); return 0; } }}} #2 {{{ int **matrix_mul(int **s, int **t, int N) { int **M = (int *)malloc(sizeof(int)*N); int value; for (int sentinel = 0; sentinel < N; sentinel++) *(M + sentinel) = (int *)malloc(sizeof(int)*N); for (int sentinel = 0; sentinel < N; sentinel++) { for (int sentinel_2 = 0; sentinel_2 < N; sentinel_2++) { value = 0; for (int sentinel_3 = 0; sentinel_3 < N; sentinel_3++) { value += s[sentinel][sentinel_3] * t[sentinel_3][sentinel_2]; } M[sentinel][sentinel_2] = value; } } return M; } }}} * 이민지 * #1 {{{ #include int main() { int arr[10000]; int min[10000]; int i,j, temp; printf("자연수를 몇개 입력하실 건가요? : "); scanf_s("%d", &i); printf("자연수를 입력하세요. : \n"); for (j = 0; j < i; j++) { scanf_s("%d", &arr[j]); } for (j = 0; j < i / 2; j++) { min[j] = arr[i - j - 1]; } for (j = i/2; j < i; j++) { min[j] = arr[i - j - 1]; } printf("배열을 뒤집으면! \n"); for (j = 0; j < i ; j++) { printf("%d \n", min[j]); } return 0; } }}} #2 {{{ #include #include int** matrix_mul(int **s, int **t, int N); int main(int argc, char** argv) { int A[3][3] = { { 1, 1, 2 }, { 1, 0, 1 }, { 0, 3, 0 } }; int B[3][3] = { { 2, 1, 3 }, { 1, 3, 2 }, { 1, 2, 0 } }; int *parr_A[3] = { A[0], A[1], A[2] }; int *parr_B[3] = { B[0], B[1], B[2] }; int **AB = (void*)0; int i, j, N = 3; printf("A : \n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", A[i][j]); } printf("\n"); } printf("B : \n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", B[i][j]); } printf("\n"); } AB = matrix_mul(parr_A, parr_B, N); if (AB) { printf("A x B : \n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", AB[i][j]); } printf("\n"); } } return 0; } int** matrix_mul(int **s, int **t, int N) { int** re = (int**)malloc(sizeof(int*)*N); int i,j,k,o; for (i = 0; i < N; i++) { re[i] = (int*)malloc(sizeof(int)*N); } for (j = 0; j < N; j++) { for (k = 0; k < N; k++) { re[j][k] = 0; for (o = 0; o < N; o++) { re[j][k] += s[j][o] * t[o][k]; } } } return re; } }}} = 기타 / 후기 / 방명록 = ----------------------------------- [새싹교실/2017/C언어가르쳐조] [새싹교실/2017]