2. 과제 ¶
- 1. 행렬 A를 입력받아 A^T(transpose)를 출력하는 프로그램을 만드시오.
- 기본적으로 행렬 A는 5X5 행렬.
- 처음 실행시 행렬의 크기도 입력받게 해서 만들어 본다면 상을 줄게요.
- 기본적으로 행렬 A는 5X5 행렬.
- 2. Tic-Tac-Toe 게임
- 3X3 행렬에서 먼저 한 줄을 본인의 말로 완성하면 이기는 게임
- 기본적으로 rand함수를 이용해 컴퓨터의 말의 위치를 선택
- 컴퓨터에 AI를 내장한다면 상을 줄게요.
- 3X3 행렬에서 먼저 한 줄을 본인의 말로 완성하면 이기는 게임
2.1. 유재범 ¶
1번 코드 #include <stdio.h> #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번도 빠른 시일 내에 올리겠습니다.
2.2. 오영은 ¶
미완성. 일단 올려놓고 나중에 고칠게요. #include<stdio.h> #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<stdio.h> #pragma warning(disable:4996) #include <windows.h> 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() { trans[num2-1][num1-1]='O'; times++; srand((unsigned)time(NULL)); com1=rand()%3; com2=rand()%3; if(trans[com2][com1]!='/0') { while(trans[com2][com1]=='/0') { com1=rand()%3; com2=rand()%3; } trans[com2][com1]='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); }
#include<stdio.h>
#pragma warning(disable:4996)
#include <windows.h>
#include <time.h>
#pragma warning(disable:4996)
#include <windows.h>
#include <time.h>
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│ │★│ │\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", trans00, trans01, trans02);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans10, trans11, trans12);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans20, trans21, trans22);
printf(" └─┴─┴─┘\n\n");
printf(" ┌─┬─┬─┐\n");
printf("1│%2c│%2c│%2c│\n", trans00, trans01, trans02);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans10, trans11, trans12);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans20, trans21, trans22);
printf(" └─┴─┴─┘\n\n");
printf("원하시는 좌표를 입력하세요. : ( , )");
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);
while(times<9)
{
ttt();
{
ttt();
}
system("pause");
}
system("pause");
}
char ttt()
{
{
srand((unsigned)time(NULL));
com1=rand()%3;
com2=rand()%3;
printf("%d %d\n",com1,com2);
if(transcom2com1!='/0')
{
}
else
times++;
com1=rand()%3;
com2=rand()%3;
printf("%d %d\n",com1,com2);
if(transcom2com1!='/0')
{
}
else
times++;
system("cls");
printf(" 1 2 3 \n");
printf(" ┌─┬─┬─┐\n");
printf("1│%2c│%2c│%2c│\n", trans00, trans01, trans02);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans10, trans11, trans12);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans20, trans21, trans22);
printf(" └─┴─┴─┘\n\n");
printf("원하시는 좌표를 입력하세요. : ( , )");
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);
}
printf(" 1 2 3 \n");
printf(" ┌─┬─┬─┐\n");
printf("1│%2c│%2c│%2c│\n", trans00, trans01, trans02);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans10, trans11, trans12);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans20, trans21, trans22);
printf(" └─┴─┴─┘\n\n");
printf("원하시는 좌표를 입력하세요. : ( , )");
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);
}
2.3. 장우진 ¶
1번 코드 #include <stdio.h> 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 <stdio.h> 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<matrix_size;i++) { for(j=0;j<matrix_size;j++) { scanf("%d",&number[i][j]);//행렬의 크기만큼 입력받도록 } } printf("\n\n"); for(i=0;i<=matrix_size/2;i++) printf(" "); printf("│\n"); for(i=0;i<=matrix_size/2;i++) printf(" "); printf("│ transpose\n"); for(i=0;i<=matrix_size/2;i++) printf(" "); printf("▼\n\n"); for(i=0;i<matrix_size;i++) { for(j=0;j<matrix_size;j++) printf("%2d",number[j][i]); printf("\n"); } printf("\n"); return 0; } 2번 코드-A.I.포함 #include <stdio.h> #include <Windows.h> #include <time.h> 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; select_check=0; if(o_x[1][1]==0) o_x[1][1]='x'; else { for(i=0;i<3;i++) { 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++; 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++; 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++; 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++; 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++; 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++; break; } } } if(select_check==0)//아무것도 아닐때 { ComputerTurn_Easy(); } } } *2번째 코드에서 어려움모드(A.I.)돌아는 가지만 오류가 보임...