もう一度改めて投稿させていただきます;;
[1] 質問文
[1.1] C言語の授業で、途中から課題が手に負えなくなってしまいました。以前も質問させていただいてしばらく考えてはいたのですが、まったくわからず、提出期限が迫るばかりです;; 他の授業のテストも迫ってきてしまい、この課題の提出期限も目前になってしまったので、どうにか、正解のプログラムを教えていただけると幸いです;; どうかよろしくお願いいたします。
[1.2] 下のものを、「乱数などを使って表を十分にスクランブルし、ゲームが始められるようにしろ」という課題です。
/* PROGRAM 9 乱数 Random.c */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<time.h>
int Nummatrix(void);
int Check(int);
int Tableinit(int n);
int Start(int n);
int Table(int);
int Drawkoma(int x, int y, int n);
int Move(int n, char S);
int Select(int n);
int masu[11][11];
main( ){
int num, test, t;
clrscr();
do{
num = Nummatrix();
test = Check(num);
cprintf(" %d \n\r", num);
}while(test == 1);
clrscr();
Tableinit(num);
do{
t = Select(num);
}while(t != 0);
gotoxy(5,num+8);
cprintf(" 終了\n\n\n");
return 0;
}
int Nummatrix(){
char charn[2];
int n;
textcolor(10);
cprintf(" 大きさは?");
gets(charn);
n = atoi(charn);
return n;
}
int Check(int n){
int check;
if(n > 1 && n <= 10){
printf(" 正しい入力です ");
check = 0;
}
else{
printf(" 入力のまちがい ");
check = 1;
}
return check;
}
int Tableinit(int n){
int x, y;
textbackground(11);
clrscr();
printf("\n\n\n");
for(y=1;y<=n;y++){
for(x=1;x<=n;x++){
masu[x][y] = x + (y-1)*n ;
if(x==n && y==n) masu[x][y] = 0;
Drawkoma(x, y, n);
}
cprintf("\n\r");
}
return 0;
}
int Start(int n){
int i, k;
char choice;
srand((int)time(0));
for(i=0; i<=10; i++){
k = rand()/(1.+ RAND_MAX)*4;
switch(k){
case 0:
choice ='I';
break;
case 1:
choice ='J';
break;
case 2:
choice ='K';
break;
case 3:
choice ='M';
break;
default:
printf(" Random Number ??? \n");
break;
}
textcolor(10);
cprintf("%d %c",k, choice);
getchar();
Move(n, choice);
}
return 0;
}
int Table(int n){
int x, y;
textbackground(11);
clrscr();
printf("\n\n\n");
for(y=1;y<=n;y++){
for(x=1;x<=n;x++) Drawkoma(x ,y ,n);
cprintf("\n\r");
}
cprintf("\n\r");
return 0;
}
int Drawkoma(int x, int y, int n){
int col;
textbackground(15);
col = (masu[x][y] - 1)/n + 9;
if(col > 15) col = col+1;
textcolor(col);
if(masu[x][y] !=0) cprintf(" %2d",masu[x][y]);
else{
textcolor(15); cprintf(" *");
}
return 0;
}
int Select(int n){
int t;
char S[1];
t=1;
textbackground(11);
textcolor(14);
gotoxy(4*n+8,5); cprintf("駒を動かす \n");
textcolor(15);
gotoxy(4*n+10,6); cprintf("I:上の駒を入れる \n");
gotoxy(4*n+10,7); cprintf("J:左の駒を入れる \n");
gotoxy(4*n+10,8); cprintf("K:右の駒を入れる \n");
gotoxy(4*n+10,9); cprintf("M:下の駒を入れる \n");
gotoxy(4*n+10,10); cprintf("0:終了 \n");
cscanf("%s",S);
if(S[0]=='0') t=0;
else Move(n,S[0]);
return t;
}
int Move(int n, char S){
int oldx, oldy, x, y;
for(x=1;x<=n;x++){
for(y=1;y<=n;y++){
if(masu[x][y] == 0){
oldx = x;
oldy = y;
}
}
}
switch(S){
case 'I' : case 'i':
if(oldy > 1 ){
masu[oldx][oldy]= masu[oldx][oldy-1];
masu[oldx][oldy-1] = 0;
Table(n);
}
break;
case 'J' : case 'j':
if(oldx > 1 ){
masu[oldx][oldy]= masu[oldx-1][oldy];
masu[oldx-1][oldy] = 0;
Table(n);
}
break;
case 'K' : case 'k':
if(oldx < n ){
masu[oldx][oldy]= masu[oldx+1][oldy];
masu[oldx+1][oldy] = 0;
Table(n);
}
break;
case 'M' : case 'm':
if(oldy < n ){
masu[oldx][oldy]= masu[oldx][oldy+1];
masu[oldx][oldy+1] = 0;
Table(n);
}
break;
default:
break;
}
return 0;
}
/* PROGRAM 10.1 12月8日 ファイル出力 Fileout.c */
#include <stdio.h>
main( ){
int i=1, no;
char WORD[10], check[3];
FILE *fp;
/* Open Error Check */
if((fp=fopen("Data.dat","w"))==0){
printf("cannot open file \n");
return 1;
}
while(i!=0){
printf("記憶したい言葉を入力 ");
scanf("%s",WORD);
fprintf(fp,"%d %s",i,WORD);
printf("記憶したい数字を入力 ");
scanf("%d",&no);
fprintf(fp," %d\n",no);
printf("繰り返しますか? YES or NO ");
scanf("%s",check);
i++;
if(check[0]=='N' || check[0]=='n') i=0;
}
/*Close Error Check */
if(fclose(fp)){
printf("cannot close file \n");
return 1;
}
else return 0;
}
/* PROGRAM 10.2 12月8日 ファイル入力 Filein.c */
#include <stdio.h>
main( ){
int i, num;
char WORD[10];
FILE *fp;
/* Open Error Check */
if((fp=fopen("Data.dat","r"))==0){
printf("cannot open file \n");
return 1;
}
printf("入力されていた言葉、数字は \n");
while(fscanf(fp,"%d",&i)!=EOF){
fscanf(fp,"%s %d",WORD,&num);
printf(" %s %d\n",WORD,num);
}
fclose(fp);
return 0;
}
また、そのあと、そのデータを保存・書き写しするプログラムを作れという課題は、質問自体がよくわからないし、どこをどういじればよいのかもわかりません;;
どうか教えて下さい。よろしくお願いします;;
[2] 環境
[2.1] OS : WindowsXP
[2.2] コンパイラ名 : どこにかいてあるのかわかりません;;
[3] その他
正直、C言語自体、あまり理解できていません・・・これまで、いくつも課題が出ていたのですが、友達と協力してなんとかこなしてきました。しかし、友達はもうこの授業をあきらめてしまい、私はあきらめたくなくてまだ授業に出ているのですが、課題がどんどん難しくなってきていて、手に負えなくなってしまいました。都合のいいお願いなのは百も承知ですが、どうか、解答を教えていただけると幸いです;;どうか、よろしくお願いいたします。