6月28日課題 課題1。1限目の授業で説明したプログラムを完成せよ。 課題2。'2','4','6','8'の分岐を switch case 文を用いて書き直せ。 #include main() { int k,ch,nx,ny,a[4][4]; char chk; for(ny=0;ny<4;ny++) for(nx=0;nx<4;nx++) a[ny][nx]=(7*(4*ny+nx+1))%16; /* 7* の7を別の奇数に変えても可, a[3][3]は0になる */ chk='Y'; ny=3; nx=3; /* (nx,ny) : 0(空白)の位置(座標)を表す */ while(1) { if(chk=='Y') /* '2','4','6','8' 以外では表示を行わない */ { printf("---------------------\n"); /* 最上位の枠 */ for(k=0;k<4;k++) { printf("|%3d |%3d |%3d |%3d |\n",a[k][0],a[k][1],a[k][2],a[k][3]); printf("---------------------\n"); } printf(" D:2 L:4 R:6 U:8 E:0\n"); /* D:Down, L:Left, R:Right, U:Up, E:End */ } ch=getchar(); chk='N'; if(ch=='2'&&ny>0) { k=a[ny][nx]; a[ny][nx]=a[ny-1][nx]; a[ny-1][nx]=k; ny--; chk='Y'; } if(ch=='4'&&nx<3) { k=a[ny][nx]; a[ny][nx]=a**********; a**********=k; n***; chk='Y'; } if(ch=='6'&&nx>0) { k=a[ny][nx]; a[ny][nx]=a**********; a**********=k; n***; chk='Y'; } if(ch=='8'&&ny<3) { k=a[ny][nx]; a[ny][nx]=a**********; a**********=k; n***; chk='Y'; } if(ch=='0') break; } }