// 足し算か引き算をひとつ生成
// 引数  -- kotaeNoSaidaiChi 答えの最大値（正数）
// 戻り値　-- 生成した問題。例 "1+1"
function mondaiSeisei(kotaeNoSaidaiChi) {
  var no1;
  var no2;
  var mondai;
  var seikai; 
  var kotae;
  var enzan;  // "+" か "-" 

  do {
    no1 = randomInt(kotaeNoSaidaiChi-1);
    if (randomInt(2) == 1) { //足し算の場合
      enzan = " + ";
      no2 = randomInt(kotaeNoSaidaiChi-no1);
      seikai = no1 + no2;
    }
    else {  // 引き算の場合
      enzan = " - ";
      if (no1 > 10) {
        no2 = randomInt(no1-10);
      }
      else {
        no2 = randomInt(no1);
      }
      seikai = no1 - no2;
    }
    mondai = no1 + enzan + no2;
  }
  while (mondaiChofuku(mondai));
  return mondai;
}

var gKeisanSubMondaiKioku = new Array(); //これまでに出した問題を記憶
var gKeisanSubMondaiBangou = 0; //これまでに出した問題の数を記憶

//これまでに生成した問題と重複があるかをチェックする
//引数   mondai -- チェック対象の問題。たとえば"1+1="
//戻り値 true  -- すでに生成した問題と重複していた
//       false -- 重複はなかった
function mondaiChofuku(mondai) {
  for (var i=0; i<gKeisanSubMondaiBangou; i++) {
    if (gKeisanSubMondaiKioku[i] == mondai) {
      return true;
    }
  }
  gKeisanSubMondaiKioku[gKeisanSubMondaiBangou] = mondai;
  gKeisanSubMondaiBangou++;
  return false;
}

// 1以上i以下の整数を返す
function randomInt(i) {
  return( Math.floor(Math.random()*i) + 1 );
}
