落書きノート

ふと自分が気になった事を書いてます

C++で問題を解く

いよいよ長くなってきましたね。まだ行ける…かな。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

const static int answer(const int& pattern, const int& a, const int& b, const int& c){
  int ans;

  switch(pattern){
    case 0 : ans = a + b + c; break;
    case 1 : ans = a + b - c; break;
    case 2 : ans = a - b + c; break;
    default : ans = a - b - c; break;
  }

  return ans;
}

static int generate_rand(){
  return 100 + rand() % 900;
}

static bool confirm_retry(){
  int retry;

  do{
    cout << "もう一度?<Yes...1/No...0> : ";
    cin >> retry;
  }while(retry != 0 && retry != 1);

  return static_cast<bool>(retry);
}

static string oppatternX(const int& pattern){
  return pattern < 2 ? " + " : " - ";
}

static string oppatternY(const int& pattern){
  return pattern % 2 ? " - " : " + ";
}

static bool judge(const int& ans, const int& k){
  return static_cast<bool>(ans == k);
}

int main(void){
  int a,b,c;
  int ans;
  int pattern;
  int k;

  srand(time(NULL));

  cout << "暗算トレーニング開始!!" << endl;

  do{
    a = generate_rand();
    b = generate_rand();
    c = generate_rand();
    pattern = rand() % 4;
    ans = answer(pattern, a, b, c);

    while(true){
      cout << a << oppatternX(pattern)
           << b << oppatternY(pattern)
           << c << " = ";
      cin >> k;

      if(judge(ans, k))
        break;
      else
        cout << "答えが違います。" << endl;
    }

  }while(confirm_retry());

  return 0;
}
#include <iostream>

using namespace std;

static int sum(const int& a, const int& b = 1){
  int total = 0;

  for(int i = b; i <= a; i++){
    total += i;
  }

  return total;
}

int main(void){
  int x,y;

  cout << "整数X : ";
  cin >> x;
  cout << "整数Y : ";
  cin >> y;

  cout << "1からyまでの合計は" << sum(y) << "です。" << endl;
  cout << "xからyまでの合計は" << sum(y, x) << "です。" << endl;

  return 0;
}

ちょっとかっこつけましたけど、やってる事は難しくないです。(笑)