#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define TIME_LIMIT 3
int main()
{
time_t time1;
double s;
int baaiwake;
char *seikai;
seikai=0;
srand(time(NULL));
baaiwake=rand()%4+1;
if(baaiwake=1){
*seikai=4;
}
else if(baaiwake=2){
*seikai=5;
}
else if(baaiwake=3){
*seikai=6;
}
else if(baaiwake=4){
*seikai=8;
}
printf("4か5か6か8を入力\n");
time(&time1); /* 開始時間 */
while(*seikai){
/* キーが入力されていない時、開始時間と現在の時間の差を求めて
制限時間に達したかを調べる */
if (!kbhit()){
if ((s = difftime(time(NULL),time1)) >= TIME_LIMIT){
printf("遅い\n");
break;
}
continue;
}
/* 入力された文字とseikaiの指す現在の文字が一致しない時
"はずれ"と表示 */
if (*seikai != (int)getch()){
printf("はずれ\n");
continue;
}
/* キーが一致した時、"成功"表示 */
else{
printf("成功\n");
}
}
return 0;
}
C言語初心者です。
ビルドでエラーが出なかったのですが、実行すると自動停止します。
特にポインタ変数、getch、continue・break、elseあたりの使い方が間違っていると思うのですが、どう直せばいいのかわかりません。
アドバイスお願いします。
ポインタ変数等
Re: ポインタ変数等
何をするプログラムかを説明して下さい。
特に
char *seikai;
このseikaiがポインタである理由を説明して下さい。
ついでに、ifの条件で等しい場合は=は2個です。
コードタグを使って見やすくしてもらわないと、読む気が起こりません。
特に
char *seikai;
このseikaiがポインタである理由を説明して下さい。
ついでに、ifの条件で等しい場合は=は2個です。
コードタグを使って見やすくしてもらわないと、読む気が起こりません。
non
Re: ポインタ変数等
#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define TIME_LIMIT 3
int main()
{
time_t time1;
double s;
int baaiwake;
char seikai, *seikai; //ここもよく分からない
seikai=0; //seikaiの初期化
srand(time(NULL));
baaiwake=rand()%4+1;
if(baaiwake==1){ //4,5,6,8いずれかのキーを押せば正解になるかをランダムで決定
seikai=4;
}
else if(baaiwake==2){
seikai=5;
}
else if(baaiwake=3){
seikai=6;
}
else if(baaiwake=4){
seikai=8;
}
printf("4か5か6か8を入力してください\n");
time(&time1); /* 開始時間 */
while(*seikai){ //キー入力に制限時間を付けたいが、whileを使うのかすら分からない
if (!kbhit()){ /* キーが入力されていない時、開始時間と現在の時間の差を求めて、制限時間に達したかを調べる */
if ((s = difftime(time(NULL),time1)) >= TIME_LIMIT){
printf("遅い\n");
break;
}
continue; //ここは要るのか要らないのか分からない
}
if (*seikai != (int)getch()){ /* 入力された文字とseikaiの指す現在の文字が一致しない時"はずれ"と表示 */
printf("はずれ\n");
break;
}
else{ /* キーが一致した時、"成功"表示 */
printf("成功\n");
}
}
return 0;
}
すみません力不足・説明不足で
もしかするとポインタ変数を使う必要がないのでしょうか?
プログラムを説明しますと
正解がランダムの四つの選択肢(キーボードの4,5,6,8キー)があり、どれか一つを選び
正解と選んだ選択肢が同じなら"正解"
違うなら"はずれ"
そして3秒以内に選択肢を決めなかった場合"遅い"と表示
となります。
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#define TIME_LIMIT 3
int main()
{
time_t time1;
double s;
int baaiwake;
char seikai, *seikai; //ここもよく分からない
seikai=0; //seikaiの初期化
srand(time(NULL));
baaiwake=rand()%4+1;
if(baaiwake==1){ //4,5,6,8いずれかのキーを押せば正解になるかをランダムで決定
seikai=4;
}
else if(baaiwake==2){
seikai=5;
}
else if(baaiwake=3){
seikai=6;
}
else if(baaiwake=4){
seikai=8;
}
printf("4か5か6か8を入力してください\n");
time(&time1); /* 開始時間 */
while(*seikai){ //キー入力に制限時間を付けたいが、whileを使うのかすら分からない
if (!kbhit()){ /* キーが入力されていない時、開始時間と現在の時間の差を求めて、制限時間に達したかを調べる */
if ((s = difftime(time(NULL),time1)) >= TIME_LIMIT){
printf("遅い\n");
break;
}
continue; //ここは要るのか要らないのか分からない
}
if (*seikai != (int)getch()){ /* 入力された文字とseikaiの指す現在の文字が一致しない時"はずれ"と表示 */
printf("はずれ\n");
break;
}
else{ /* キーが一致した時、"成功"表示 */
printf("成功\n");
}
}
return 0;
}
すみません力不足・説明不足で
もしかするとポインタ変数を使う必要がないのでしょうか?
プログラムを説明しますと
正解がランダムの四つの選択肢(キーボードの4,5,6,8キー)があり、どれか一つを選び
正解と選んだ選択肢が同じなら"正解"
違うなら"はずれ"
そして3秒以内に選択肢を決めなかった場合"遅い"と表示
となります。
Re: ポインタ変数等
コードを提示するときは、BBcodeを有効にした状態でcodeタグで囲み、
かつきちんとインデントをしていただけると、見やすくて助かります。
かつきちんとインデントをしていただけると、見やすくて助かります。
はい。そのように感じます。cgengoshosinsha さんが書きました:もしかするとポインタ変数を使う必要がないのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ポインタ変数等
ポインタを使っている意味がわかりません。
学校の課題なら、意味はなくとも、使う必要がなくても使う必要があるでしょうから、課題を正確に示して下さい。
>if (*seikai != (int)getch()){ /* 入力された文字とseikaiの指す現在の文字が一致しない時"はずれ"と表示 */
ポインタを止めたととしても、うまくいきません。文字と数値の違いを理解する必要があります。
>continue; //ここは要るのか要らないのか分からない
ポインタを訂正してから、実際につけたときと、外したときで試してみればわかることです。
しかし、このようなcontinueを使う発想が、要るのか要らないのかわからない人に生まれるとは思えません。
これは、人が作ったプログラムを元にしているのでしょうか?
学校の課題なら、意味はなくとも、使う必要がなくても使う必要があるでしょうから、課題を正確に示して下さい。
>if (*seikai != (int)getch()){ /* 入力された文字とseikaiの指す現在の文字が一致しない時"はずれ"と表示 */
ポインタを止めたととしても、うまくいきません。文字と数値の違いを理解する必要があります。
>continue; //ここは要るのか要らないのか分からない
ポインタを訂正してから、実際につけたときと、外したときで試してみればわかることです。
しかし、このようなcontinueを使う発想が、要るのか要らないのかわからない人に生まれるとは思えません。
これは、人が作ったプログラムを元にしているのでしょうか?
non