タイピングゲーム

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

タイピングゲーム

#1

投稿記事 by kikn » 4ヶ月前

プログラミング初心者ですので、上級者の方には簡単なものかも知れませんが、困っているので力をお貸しください。
いま、タイピングソフトを作っていて、コードを書き終え実行してみるとエラーは出ないのですがフリーズして強制終了してしまいます。
下にコードを載せておくので、添削お願い致します。

kikn

Re: タイピングゲーム

#2

投稿記事 by kikn » 4ヶ月前

コード:

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>

int sleep(int x)
{
clock_t start,now;
now = start = clock( );
while(1000 * (now-start) / CLOCKS_PER_SEC < x){
	now = clock( );
	if(now == (clock_t)-1){ 
	return 0;
	}
}
return 1; 
}

int main(void)
{

	FILE *fp;
	char str[256];
	int len,i,ch,a,b,nyu,mo;
	clock_t start,end;
	double jikan,at,spd;
	
	nyu = 0;
	
	mo = 0;

	
	printf("5");
	fflush(stdout);
	sleep(1000);
	
	printf("\r4 ");
	fflush(stdout);
	sleep(1000);
	
	printf("\r3  ");
	fflush(stdout);
	sleep(1000);

	printf("\r2   ");
	fflush(stdout);
	sleep(1000);
	
	printf("\r1    ");
	fflush(stdout);
	sleep(1000);
	
	printf("\r");
	fflush(stdout);
	sleep(100);
	
	
	fp = fopen("data.txt","r");
	if(fp == NULL){
		printf("File Open Error\n");
		return -1;
	}
	printf("以下の文字列をタイプしてください.\n");
	start = clock( );
	while(fgets(str,256,fp) != NULL){
		len = strlen(str);
		str[len-1] = '\0';
		len = len -1;
		for(i = 0; i< len; i++){
			printf("%s \r",&str[i]);
			fflush(stdout);
			while(1){
				ch = getch( );
				if(ch == str[i]){
					break;
						end = clock( );
	jikan = (double)(end - start) / CLOCKS_PER_SEC;
				at = 100 * mo / nyu;
    printf("出題文字数は%d(key)です. 全入力数は%d(key)です. 正打率は%.1lf(%)です.",mo,nyu,at);
	spd = mo * 60 / jikan;
	printf("\n所要時間は%.1lf(sec)です.",jikan);
 printf(",タイプスピードは%.1lf(key/min)です.",spd);
				}
				   
			}
		}
	}

		fclose(fp);
		
		
	if(at >=100 && spd <=200){
		printf("\nSランク. \n");
	}else if(at >=80 && spd <=190){
		printf("\nAランク \n");
	}else if(at >=70 && spd <=180){
		printf("\nBランク \n");
	}else if(at >=60 && spd <=175){
		printf("\nCランク \n");
	}else if(at >=50 && spd <=160){
		printf("\nDランク \n");
	}else {
		printf("\nEランク \n");
	}
		return 0;
}

アバター
みけCAT
記事: 6236
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: タイピングゲーム

#3

投稿記事 by みけCAT » 4ヶ月前

変数nyuが28行目で0に初期化された後、更新されることなく78行目で割る数として使われています。
そのため、ゼロ除算で強制終了すると予測できます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

kikn

Re: タイピングゲーム

#4

投稿記事 by kikn » 4ヶ月前

みけCAT さん
ご返信ありがとうございます。
ご指摘通り、初期化後入力回数の計算を入れ忘れていました。
修正後、正常に動きました!
本当にありがとうございます!

返信

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