C言語について質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
CROSS

C言語について質問です

#1

投稿記事 by CROSS » 18年前

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int sleep(unsigned long x);

int main(void)
{
int count = 0;
int success = 0;
int x;
int no[4];
int fal[4];
int inpTable[4][2];
int succount = 0;
int falcount = 0;
int i, j;
clock_t start, end;

srand(time(NULL));
start = clock();

for (i = 0; i < 5; i++){
printf(" ◎問題 %dです\n", i + 1);

no = 1000 + rand() % 9000;

printf(" %d", no);
fflush(stdout);
sleep(1000);
do{
printf("\r[%2d]入力せよ:", count + 1);
scanf("%d", &x);

if (x != no){
printf("\a間違いです。\n");
falcount++;
}
else{
printf("正解です。\n");
success++;
succount++;
}

inpTable[count] = x;
count++;
}while (count < 3 && succount == 0);

count = 0;
succount = 0;
fal = falcount;
falcount = 0;
}

end = clock();

printf("++++++++++++++++++++++処理結果++++++++++++++++++++++\n");
printf("5回実行 %d回成功しました。\n", success);
printf("%.1f秒でした。\n", (double)(end - start) / CLOCKS_PER_SEC);
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++\n");

for (i = 0; i < 5; i++){
if (fal == 3)
printf("問題%d   間違いです\n", i + 1);
else
printf("問題%d  %d回目で正解です\n", i + 1, fal + 1);

printf("  値(%d)", no);
if (fal == 0)
printf(" %d", inpTable[0]);
else{
for (j = 0; j <= fal[i]; j++){
printf(" %d", inpTable[i][j]);
if (j != fal[i])
printf(" ,");
}
}
printf("\n\n");
}

return 0;
}

/* xミリ秒経過するのを待つ */
int sleep(unsigned long x)
{
clock_t c, s = clock();

do{

if ((c = clock()) == (clock_t)-1)
return 0;
}while (1000UL * (c - s) / CLOCKS_PER_SEC < x);

return 1;
}

-----------------------------------------------------------------------------------------
課題で、記憶ゲームを作成しています。
ルールとしては、1秒間の間表示される4文字の数字を見て入力する。3回間違えるか、一回正解したらクリア。を、5回くりかえし、最後にその履歴を表示するというものです。

しらべてみたところ、なぜか最初のfor文の後に各配列の0番目の要素に格納されている数がおかしくなっているようなのですが、自分ではどうしてもダメな理由が発見できず、質問させていただきました。

お手数ですが、ご指摘の程よろしくお願いいたします。

フリオ

Re:C言語について質問です

#2

投稿記事 by フリオ » 18年前

 
 a[4] と宣言された配列は、a[0]~a[3] です。

閉鎖

“C言語何でも質問掲示板” へ戻る