数学とか語学とか楽しいよね

フランス語、ドイツ語、ロシア語、アラビア語、オランダ語、英語、スペイン語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、格子ボルツマン法、数理最適化、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。noteにも書いています。https://note.mu/kumag_min

【プログラム】C++コードで19×19までの暗算を練習するやつをつくりました

最近計算力をあげようと色々調べています。そこで見つけたのがこの動画です。

11×11から19×19までを簡単に暗算する方法を解説しています。いわゆるインド式というやつです。ただ簡単といっても多少の練習は必要です。そこで、C++コードで11×11から19×19までを練習するやつを作ってみました。超簡単なコードです。一応1×1から19×19まで対応しています。最初に1を入力すると11×11から19×19まで、2を入力すると1×1から19×19まで練習できます。

#include <iostream>
#include <cmath>
#include <fstream>
#include <iomanip>
#include <stdio.h>
#include <time.h>
#include <stdlib.h> 

using namespace std;

int main()
{
	int i;
	int a,b,c;
	int ans;
	int num;
	int ch;

	srand((unsigned int)time(NULL));
	
	do
	{
		cout<<"11以上だけ練習しますか?"<<endl;
		cout<<"Yes=1, No=2"<<endl;
		cin>>ch;
		if((ch!=1)&&(ch!=2))
		{
			cout<<"1か2を入力して下さい"<<endl;
			cout<<endl;
			num=0;
		} 
		if((ch==1)||(ch==2)) break;
		
	}while(num==0);
	cout<<endl;
	
	num=0;
	for(i=0;i<10;i++)
	{
		if(ch==1)
		{
			a=rand()%9+11;
			b=rand()%9+11;
			c=a*b;
		}
		if(ch==2)
		{
			a=rand()%19+1;
			b=rand()%19+1;
			c=a*b;
		}
		
		cout<<a<<"×"<<b<<"=?"<<endl;
		cin>>ans;
		
		if(ans==c)
		{
			cout<<"正解!"<<endl;
			num+=1;
		}
		else
		{
			cout<<"間違い…"<<c<<endl;
		}
		cout<<endl;
	}
	
	cout<<"正解数は"<<num<<"/10です"<<endl;

	return 0;
}