Created by
sironekotoro
| /**
* Kukuは、九九の問題をランダムに10個表示して
* その正解数と正解率を表示するプログラムである.
* @author 結城浩
* @copyright by Hiroshi Yuki.
* Java言語プログラミングレッスン第3版
* https://www.hyuki.com/jb/
*/
import java.io.*;
public class Kuku {
/** 表示する問題の個数 */
public static final int MAX_QUESTION = 10;
/**
* 九九の問題を MAX_QUESTION 回繰り返して出題する。
* 最後に正答率を表示する
*/
public static void main(String[] args){
int goodAnswers = 0; // 正答の個数
System.out.println("これから九九の問題を" + MAX_QUESTION + "問出します。");
/**
* 以下、問題を繰り返し表示し、ユーザからの回答を判断する。
* その後、正答の数を数える。
*/
for (int i = 0;i < MAX_QUESTION; i++){
boolean ok = showQuestion(i+1);
if (ok) {
goodAnswers++;
}
}
double rate = goodAnswers * 100.0 / MAX_QUESTION;
System.out.println("");
System.out.println("問題は" + MAX_QUESTION + "問ありました。");
System.out.println("正しく答えられたのは" + goodAnswers + "問で、");
System.out.println("間違えてしまったのは" + (MAX_QUESTION - goodAnswers) + "問です。");
System.out.println("正答率は" + rate + "%です。");
System.out.println("");
System.out.println("お疲れ様。");
}
/**
* ShowQuestionは九九の問題を1問出し、答えを待つ。
* 正答、後藤の別を表示する
* 正答の場合は true を返す。
*/
public static boolean showQuestion(int questno){
int x = (int)(Math.random() * 9 ) + 1;
int y = (int)(Math.random() * 9 ) + 1;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("[第" + questno + "問] " + x + " x " + y + " = ?");
String line = reader.readLine();
int result = Integer.parseInt(line);
if (x * y == result){
System.out.println("はい、正しいです。");
return true;
}else{
System.out.println("残念、間違いです。");
return false;
}
}catch (IOException e){
System.out.println(e);
}catch(NumberFormatException e){
System.out.println("入力が正しくありません。");
}
return false;
}
}
|
| use strict;
use warnings;
use feature qw/say/;
use utf8;
binmode STDOUT, ":encoding(cp932)";
my $MAX_QUESTION = 10;
my $good_answers = 0;
say "これから九九の問題を" . $MAX_QUESTION . "問出します。";
for ( my $i = 0; $i < $MAX_QUESTION; $i++ ) {
if ( show_question( $i + 1 ) ) {
$good_answers++;
}
}
say "問題は" . $MAX_QUESTION . "問ありました。";
say "正しく答えられたのは" . $good_answers . "問で、";
say "間違えてしまったのは"
. ( $MAX_QUESTION - $good_answers )
. "問です。";
say "正答率は" . '$rate' . "%です。";
say "";
say "お疲れ様。";
sub show_question {
my $questno = shift;
my $x = int( rand(1) * 9 ) + 1;
my $y = int( rand(1) * 9 ) + 1;
say "第" . $questno . "問 " . $x . ' × ' . $y . ' = ?';
my $line = <STDIN>;
chomp $line;
if ( $x * $y == $line ) {
say "はい、正しいです。";
return 1;
}
else {
say "残念、間違いです。";
return 0;
}
}
|