[[TableOfContents]] = 진행사항 = * 참여자 || 튜터 || [최다인] || 참석 || || 튜티 || [유재범] || 참석 || || || [오영은] || 참석 || || || [장우진] || 참석 || || || [문태현] || 불참 || * 배열의 응용 * 다음 수업 : 5월 23일 금요일 오후 6시 = 과제 = * 1. 행렬 A를 입력받아 A^T(transpose)를 출력하는 프로그램을 만드시오. * 기본적으로 행렬 A는 5X5 행렬. * 처음 실행시 행렬의 크기도 입력받게 해서 만들어 본다면 상을 줄게요. * 2. Tic-Tac-Toe 게임 * 3X3 행렬에서 먼저 한 줄을 본인의 말로 완성하면 이기는 게임 * 기본적으로 rand함수를 이용해 컴퓨터의 말의 위치를 선택 * 컴퓨터에 AI를 내장한다면 상을 줄게요. == 유재범 == {{{1번 코드 #include #pragma warning(disable:4996) int arr; int array[1000][1000] = {'\0', }; void Array(int); void Change(int); int main(void) { int count=0, select; while(1) { if(count==0) { Array(5); count++; } else { printf("몇 개의 이차원 배열을 transpose하시겠습니까?"); scanf("%d", &arr); Array(arr); count++; } printf("더 하시겠습니까? (Yes : 1, No : 2)"); scanf("%d", &select); if(select==1) continue; else break; } return 0; } void Array(int arr) { int i=0, j=0; for(i=0; i!=arr; i++) { for(j=0; j!=arr; j++) array[i][j] = (arr*i) + j+1; } for(i=0; i!=arr; i++) { for(j=0; j!=arr; j++) printf("%5d", array[i][j]); printf("\n"); } printf("\n\n\n"); Change(arr); } void Change(int arr) { int save, i, j; for(i=0; i!=arr; i++) { for(j=0; j!=arr; j++) array[j][i] = (j*arr)+i+1; } for(i=0; i!=arr; i++) { for(j=0; j!=arr; j++) printf("%5d", array[j][i]); printf("\n"); } printf("\n\n\n\n\n\n"); } 2번 코드 }}} * 1번은 카운트를 받아 처음에는 5개가 출력되고 그 다음에는 사용자가 원하는대로 출력하게 설정하였습니다. ㅋㅋ재범 11이상 입력하니 깨지네-우진 ~~필요 없어 어차피 10이면 최대 1024야. 그나저나 내 코드를 왜 돌려보고 있냐?~~ 깨지는거 생각해보니 %5d정도면 되지 않냐? * 2번도 빠른 시일 내에 올리겠습니다. == 오영은 == {{{ 미완성. 일단 올려놓고 나중에 고칠게요. #include #pragma warning(disable:4996) int trans[5][5]={0, }; int num1=0, num2=0; int main() { printf(" 1 2 3 4 5 \n"); printf(" ┌─┬─┬─┬─┬─┐\n"); printf("1│ │★│ │ │ │\n"); printf(" ├─┼─┼─┼─┼─┤\n"); printf("2│ │ │ │ │ │\n"); printf(" ├─┼─┼─┼─┼─┤\n"); printf("3│ │ │ │ │ │\n"); printf(" ├─┼─┼─┼─┼─┤\n"); printf("4│ │ │ │ │ │\n"); printf(" ├─┼─┼─┼─┼─┤\n"); printf("5│ │ │ │ │ │\n"); printf(" └─┴─┴─┴─┴─┘\n\n"); printf("표의 ★는 (1,2)좌표를 나타내는 것입니다.\n\n"); for(num1=0;num1<5;num1++) { for(num2=0;num2<5;num2++) { printf("(%d,%d)의 숫자를 입력하세요.\n", num1+1, num2+1); scanf("%d", &trans[num1][num2]); } } system("pause"); system("cls"); printf(" 1 2 3 4 5 \n"); printf(" ┌─┬─┬─┬─┬─┐\n1│"); for(num2=0;num2<5;num2++) { num1=0; printf("%2d│", trans[num1][num2]); } for(num1=1;num1<5;num1++) { if(num2=4) { printf("\n ├─┼─┼─┼─┼─┤\n%d│", num1+1); } for(num2=0;num2<5;num2++) { printf("%2d│", trans[num1][num2]); } } printf("\n └─┴─┴─┴─┴─┘\n\n"); printf(" ↓\n\n"); printf(" 1 2 3 4 5 \n"); printf(" ┌─┬─┬─┬─┬─┐\n1│"); for(num2=0;num2<5;num2++) { num1=0; printf("%2d│", trans[num2][num1]); } for(num1=1;num1<5;num1++) { if(num2=4) { printf("\n ├─┼─┼─┼─┼─┤\n%d│", num1+1); } for(num2=0;num2<5;num2++) { printf("%2d│", trans[num2][num1]); } } printf("\n └─┴─┴─┴─┴─┘\n\n\n"); system("pause"); return 0; } #include #pragma warning(disable:4996) #include #include char trans[3][3]={0, }; int num1=0, num2=0, com1=0, com2=0, times=0; void gotoxy(int x, int y) { COORD Cur; Cur.X=x; Cur.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); } char ttt(); int main() { printf("Tic-Tac-Toe 게임\n\n"); printf(" 1 2 3 \n"); printf(" ┌─┬─┬─┐\n"); printf("1│ │★│ │\n"); printf(" ├─┼─┼─┤\n"); printf("2│ │ │ │\n"); printf(" ├─┼─┼─┤\n"); printf("3│ │ │ │\n"); printf(" └─┴─┴─┘\n"); printf("표의 ★는 (1,2)좌표를 나타내는 것입니다.\n\n"); system("pause"); system("cls"); printf(" 1 2 3 \n"); printf(" ┌─┬─┬─┐\n"); printf("1│%2c│%2c│%2c│\n", trans[0][0], trans[0][1], trans[0][2]); printf(" ├─┼─┼─┤\n"); printf("2│%2c│%2c│%2c│\n", trans[1][0], trans[1][1], trans[1][2]); printf(" ├─┼─┼─┤\n"); printf("3│%2c│%2c│%2c│\n", trans[2][0], trans[2][1], trans[2][2]); printf(" └─┴─┴─┘\n\n"); printf("원하시는 좌표를 입력하세요. : ( , )"); gotoxy(31,9); scanf("%d", &num1); gotoxy(33,9); scanf("%d", &num2); while(times<9) { ttt(); } system("pause"); } char ttt() { if(trans[1][0]=='O' && trans[2][0]=='O' && trans[0][0]=='O') { printf("플레이어가 이김"); return 0; } if(trans[1][1]=='O' && trans[2][1]=='O' && trans[0][1]=='O') { printf("플레이어가 이김"); return 0; } if(trans[1][2]=='O' && trans[2][2]=='O' && trans[0][2]=='O') { printf("플레이어가 이김"); return 0; } if(trans[1][1]=='O' && trans[2][2]=='O' && trans[0][0]=='O') { printf("플레이어가 이김\n"); return 0; } if(trans[1][0]=='X' && trans[2][0]=='X' && trans[0][0]=='X') { printf("컴퓨터가 이김\n"); return 0; } if(trans[1][1]=='X' && trans[2][1]=='X' && trans[0][1]=='X') { printf("컴퓨터가 이김\n"); return 0; } if(trans[1][2]=='X' && trans[2][2]=='X' && trans[0][2]=='X') { printf("컴퓨터가 이김\n"); return 0; } if(trans[1][1]=='X' && trans[2][2]=='X' && trans[0][0]=='X') { printf("컴퓨터가 이김\n"); return 0; } trans[num1-1][num2-1]='O'; times++; srand((unsigned)time(NULL)); com1=rand()%3; com2=rand()%3; printf("%d %d\n",com1,com2); if(trans[com1][com2]!='/0') { while(trans[com1][com2]!=0) { com1=rand()%3; com2=rand()%3; } trans[com1][com2]='X'; } else trans[com1][com2]='X'; times++; system("cls"); printf(" 1 2 3 \n"); printf(" ┌─┬─┬─┐\n"); printf("1│%2c│%2c│%2c│\n", trans[0][0], trans[0][1], trans[0][2]); printf(" ├─┼─┼─┤\n"); printf("2│%2c│%2c│%2c│\n", trans[1][0], trans[1][1], trans[1][2]); printf(" ├─┼─┼─┤\n"); printf("3│%2c│%2c│%2c│\n", trans[2][0], trans[2][1], trans[2][2]); printf(" └─┴─┴─┘\n\n"); printf("원하시는 좌표를 입력하세요. : ( , )"); gotoxy(31,9); scanf("%d", &num1); gotoxy(33,9); scanf("%d", &num2); } }}} == 장우진 == {{{ 1번 코드 #include int main() { int number[5][10]; int i=0,j; for(i=0;i<50;i++) number[0][i]=i; printf("한자리 숫자를 아래와 같은 형태로 입력해 주세요.\n"); printf("o o o o o\no o o o o\no o o o o\no o o o o\no o o o o\n"); printf("\n"); for(i=0;i<5;i++) scanf("%d %d %d %d %d",&number[i][0],&number[i][1],&number[i][2],&number[i][3],&number[i][4]); printf("\n\n"); printf(" │\n │ transpose\n ▼\n\n"); for(i=0;i<5;i++) { for(j=0;j<5;j++) printf("%2d",number[j][i]); printf("\n"); } printf("\n"); return 0; 1번코드 특별과제 #include int main() { int number[100][100]; int i=0,j; int matrix_size; for(i=0;i<10000;i++) number[0][i]=i; printf("n*n행렬의 크기(행&열의 갯수)를 입력해주세요. : "); scanf("%d",&matrix_size); printf("한자리 숫자를 %d*%d형태의 행렬로 입력해주세요.\n",matrix_size,matrix_size); printf("\n"); for(i=0;i #include #include void UserTurn(); void ComputerTurn_Easy(); void ComputerTurn_Hard(); int o_x[3][3]; int main() { int i,finish_game,mode_select,turn_select,total_count=0; for(i=0;i<9;i++) o_x[0][i]=0; printf("tic-tac-toe\n"); printf("모드를 선택해주세요.(쉬움 : 1,어려움 : 2) : "); scanf("%d",&mode_select); printf("어느쪽이 먼저 시작하시겠습니까?(1. 당신,2. 컴퓨터)"); scanf("%d",&turn_select); if(mode_select==1) printf("쉬움을 선택하셨습니다.\n"); else if(mode_select==2) printf("어려움을 선택하셨습니다.\n"); else { printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n"); Sleep(3000); return 0; } if(turn_select==1) printf("먼저 시작합니다.\n"); else if(turn_select==2) printf("컴퓨터가 먼저 시작합니다.\n"); else { printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n"); Sleep(3000); return 0; } printf("3초후에 게임 시작합니다.\n"); printf("3\n"); Sleep(1000); printf("2\n"); Sleep(1000); printf("1\n"); Sleep(1000); printf("start~!"); while(1)//게임의 지속여부 { system("cls"); printf("┌─┬─┬─┐\n"); printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]); printf("└─┴─┴─┘\n"); while(1)//게임 한판 { printf("tic-tac-toe\n"); if(turn_select==1) { UserTurn(); total_count++; turn_select=2; } system("cls"); printf("┌─┬─┬─┐\n"); printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]); printf("└─┴─┴─┘\n"); if((o_x[0][0]=='o'&&o_x[0][1]=='o'&&o_x[0][2]=='o')||(o_x[1][0]=='o'&&o_x[1][1]=='o'&&o_x[1][2]=='o')||(o_x[2][0]=='o'&&o_x[2][1]=='o'&&o_x[2][2]=='o')||(o_x[0][0]=='o'&&o_x[1][0]=='o'&&o_x[2][0]=='o')||(o_x[0][1]=='o'&&o_x[1][1]=='o'&&o_x[2][1]=='o')||(o_x[0][2]=='o'&&o_x[1][2]=='o'&&o_x[2][2]=='o')||(o_x[0][0]=='o'&&o_x[1][1]=='o'&&o_x[2][2]=='o')||(o_x[2][0]=='o'&&o_x[1][1]=='o'&&o_x[0][2]=='o')) { printf("당신이 이겼습니다. 축하드립니다.\n"); break; } else if(total_count==9) { printf("무승부입니다. 수고하셨습니다.\n"); break; } if(turn_select==2) { if(mode_select==1) ComputerTurn_Easy(); else if(mode_select==2) ComputerTurn_Hard(); total_count++; turn_select=1; } system("cls"); printf("┌─┬─┬─┐\n"); printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]); printf("├─┼─┼─┤\n"); printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]); printf("└─┴─┴─┘\n"); if((o_x[0][0]=='x'&&o_x[0][1]=='x'&&o_x[0][2]=='x')||(o_x[1][0]=='x'&&o_x[1][1]=='x'&&o_x[1][2]=='x')||(o_x[2][0]=='x'&&o_x[2][1]=='x'&&o_x[2][2]=='x')||(o_x[0][0]=='x'&&o_x[1][0]=='x'&&o_x[2][0]=='x')||(o_x[0][1]=='x'&&o_x[1][1]=='x'&&o_x[2][1]=='x')||(o_x[0][2]=='x'&&o_x[1][2]=='x'&&o_x[2][2]=='x')||(o_x[0][0]=='x'&&o_x[1][1]=='x'&&o_x[2][2]=='x')||(o_x[2][0]=='x'&&o_x[1][1]=='x'&&o_x[0][2]=='x')) { printf("컴퓨터가 당신을 이겼습니다. 분발하시기바랍니다.\n"); break; } else if(total_count==9) { printf("무승부입니다. 수고하셨습니다.\n"); break; } } printf("게임을 계속 하시려면 1,그만두시려면 0을 입력하시기 바랍니다. : "); scanf("%d",&finish_game); if(finish_game==1) { for(i=0;i<9;i++) o_x[0][i]=0; total_count=0; printf("모드를 선택해주세요.(쉬움 : 1,어려움 : 2) : "); scanf("%d",&mode_select); printf("어느쪽이 먼저 시작하시겠습니까?(1. 당신,2. 컴퓨터)"); scanf("%d",&turn_select); if(mode_select==1) printf("쉬움을 선택하셨습니다.\n"); else if(mode_select==2) printf("어려움을 선택하셨습니다.\n"); else { printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n"); Sleep(3000); return 0; } if(turn_select==1) printf("먼저 시작합니다.\n"); else if(turn_select==2) printf("컴퓨터가 먼저 시작합니다.\n"); else { printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n"); Sleep(3000); return 0; } } else break; turn_select=0; } printf("게임을 종료합니다.\n"); Sleep(2000); return 0; } void UserTurn() { int row_number,column_number,select_check; printf("당신의 차례입니다. 행과 열을 선택해주세요.\n"); printf("행을 선택해주세요.(1~3행) : "); scanf("%d",&row_number); printf("열을 선택해주세요.(1~3열) : "); scanf("%d",&column_number); printf("선택하신곳이 %d행 %d열이 맞습니까?\n맞으면 1, 틀리면 0을 선택해주세요. : ",row_number,column_number); scanf("%d",&select_check); row_number-=1; column_number-=1; if(select_check==1) { if(o_x[row_number][column_number]=='x'||o_x[row_number][column_number]=='o') { printf("빈 공간이 아닙니다. 다시선택해주세요\n"); UserTurn(); } else o_x[row_number][column_number]='o'; } else if(select_check==0) UserTurn(); } void ComputerTurn_Easy() { int row_number,column_number; srand(time(NULL)); row_number=rand(); column_number=rand(); row_number%=3; column_number%=3; Sleep(50); if(o_x[row_number][column_number]=='x'||o_x[row_number][column_number]=='o') ComputerTurn_Easy(); else o_x[row_number][column_number]='x'; } void ComputerTurn_Hard() { int i,j,select_check,loop_out=1; select_check=0; if(o_x[1][1]==0) o_x[1][1]='x'; else { for(i=0;i<3;i++) { if(loop_out==0) break; for(j=0;j<3;j++) { if(o_x[i][j]=='x'&&o_x[(i+1)%3][j]=='x')//열 { if(o_x[(i+2)%3][j]==0) o_x[(i+2)%3][j]='x'; else continue; select_check++; loop_out=0; break; } else if(o_x[i][j]=='x'&&o_x[i][(j+1)%3]=='x')//행 { if(o_x[i][(j+2)%3]==0) o_x[i][(j+2)%3]='x'; else continue; select_check++; loop_out=0; break; } else if(o_x[i][j]=='x'&&o_x[(i+1)%3][(j+1)%3]=='x')//대각선 { if(o_x[(i+2)%3][(j+2)%3]==0) o_x[(i+2)%3][(j+2)%3]='x'; else continue; select_check++; loop_out=0; break; } else if(o_x[i][j]=='o'&&o_x[(i+1)%3][j]=='o')//열 { if(o_x[(i+2)%3][j]==0) o_x[(i+2)%3][j]='x'; else continue; select_check++; loop_out=0; break; } else if(o_x[i][j]=='o'&&o_x[i][(j+1)%3]=='o')//행 { if(o_x[i][(j+2)%3]==0) o_x[i][(j+2)%3]='x'; else continue; select_check++; loop_out=0; break; } else if(o_x[i][j]=='o'&&o_x[(i+1)%3][(j+1)%3]=='o')//대각선 { if(o_x[(i+2)%3][(j+2)%3]==0) o_x[(i+2)%3][(j+2)%3]='x'; else continue; select_check++; loop_out=0; break; } } } if(select_check==0)//아무것도 아닐때 { ComputerTurn_Easy(); } } } }}} == 문태현 == {{{ }}} = 후기 = * 아무 생각 없이 두번째 코드를 짰는데 뭔 문제점이 7개나 튀어나와... 코드 밀기도 힘들고. NXT 하고 과제 하고 어쩌고 하면 시간이 빠듯하다 ㅠㅠ [유재범] ----- [:새싹교실/2014/속도위반 속도위반]