#include <iostream>
using namespace std;
// (1)再帰を使って、異なるn個の整数からr個の整数を取り出す組み合わせの数 nCr を求める関数 int combination( int n, int r)を作成せよ
// またこの関数を用いて 5Cr (r=0 ~ 5)を出力するプログラムを作成せよ。なお次の関係式を用いること。
// nCr=n-1Cr-1+n-1Cr,nC0=nCn=1,nC1=n
int combination( int n, int r)
{
if(r==0)return 1;
if(n==r)return 1;
if(r==1)return n;
return combination(n-1,r-1)+ combination(n-1,r);
}
// (2) 3つのint型整数 n1, n2, n3を昇順( n1 < n2< n3 )に並べ替える関数 void sort3(int *n1, int *n2, int *n3)を作成せよ。
// この関数を用いて、main内で宣言された3つのint型整数 a1, a2, a3 の値を並べ替え 、その結果を表示するプログラムを作成せよ。 a1, a2, a3の初期値は、 a1=3, a2=1, a3=0とする。
void sort3(int *n1, int *n2, int *n3)
{
int n[3];
n[0]=*n1;
n[1]=*n2;
n[2]=*n3;
for(int i=0; i<3; i++) {
for(int j=i+1; j<3; j++) {
if(n[i]>n[j]) {
int t=n[i];
n[i]=n[j];
n[j]=t;
}
}
}
*n1=n[0], *n2=n[1], *n3=n[2];
}
// (3)要素数n個のint型配列 a の各成分の値を2倍したものを別の配列bに代入する関数 void atob(int *a, int *b, int n) を作成せよ。ここでa,bにはポインタを用いること。
// この関数を用いてint型配列 va=(1, 2, 1) の各成分の値を2倍したものを別の配列 vbに代入し、vbの各成分を出力するプログラムを作成せよ。
void atob(int *a, int *b, int n)
{
for(int i=0; i<n; i++)b[i]=a[i]*a[i];
}
int main()
{
//(1)
cout << endl << "(1)" << endl;
for(int r=0; r<=5; r++)
cout << "r=" << r << ':' << combination(5,r) << endl;
//(2)
cout << endl << "(2)" << endl;
int a1=3, a2=1, a3=0;
cout << "before sort = " << a1 << ' '<< a2 << ' ' << a3 << endl;
sort3(&a1,&a2,&a3);
cout << "after sort = " << a1 << ' '<< a2 << ' ' << a3 << endl;
//(3)
cout << endl << "(3)" << endl;
int va[]= {1, 2, 1}, vb[3];
for(int i=0; i<3; i++)cout << "va(" << i << ")=" << va[i] << endl;
atob(va,vb,3);
cout << endl;
for(int i=0; i<3; i++)cout << "vb(" << i << ")=" << vb[i] << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gKDEp5YaN5biw44KS5L2/44Gj44Gm44CB55Ww44Gq44KLbuWAi+OBruaVtOaVsOOBi+OCiXLlgIvjga7mlbTmlbDjgpLlj5bjgorlh7rjgZnntYTjgb/lkIjjgo/jgZvjga7mlbAgbkNyIOOCkuaxguOCgeOCi+mWouaVsCAgaW50IGNvbWJpbmF0aW9uKCBpbnQgbiwgaW50IHIp44KS5L2c5oiQ44Gb44KICi8vIOOBvuOBn+OBk+OBrumWouaVsOOCkueUqOOBhOOBpiAgNe+8o3IgIChyPTDjgIDvvZ4gNSnjgpLlh7rlipvjgZnjgovjg5fjg63jgrDjg6njg6DjgpLkvZzmiJDjgZvjgojjgILjgarjgYrmrKHjga7plqLkv4LlvI/jgpLnlKjjgYTjgovjgZPjgajjgIIKLy8gbu+8o3I9bi0x77yjci0xK24tMe+8o3Isbu+8ozA9bu+8o249MSxu77yjMT1uCmludCBjb21iaW5hdGlvbiggaW50IG4sIGludCByKQp7CiAgaWYocj09MClyZXR1cm4gMTsKICBpZihuPT1yKXJldHVybiAxOwogIGlmKHI9PTEpcmV0dXJuIG47CiAgcmV0dXJuIGNvbWJpbmF0aW9uKG4tMSxyLTEpKyBjb21iaW5hdGlvbihuLTEscik7Cn0KCi8vICgyKSDvvJPjgaTjga5pbnTlnovmlbTmlbAgbjEsIG4yLCBuM+OCkuaYh+mghiggbjEgPCBuMjwgbjMgKeOBq+S4puOBueabv+OBiOOCi+mWouaVsCB2b2lkIHNvcnQzKGludCAqbjEsIGludCAqbjIsIGludCAqbjMp44KS5L2c5oiQ44Gb44KI44CC44CACi8vIOOBk+OBrumWouaVsOOCkueUqOOBhOOBpuOAgW1haW7lhoXjgaflrqPoqIDjgZXjgozjgZ/vvJPjgaTjga5pbnTlnovmlbTmlbAgYTEsIGEyLCBhMyDjga7lgKTjgpLkuKbjgbnmm7/jgYgg44CB44Gd44Gu57WQ5p6c44KS6KGo56S644GZ44KL44OX44Ot44Kw44Op44Og44KS5L2c5oiQ44Gb44KI44CCICBhMSwgYTIsIGEz44Gu5Yid5pyf5YCk44Gv44CBIGExPTMsIGEyPTEsIGEzPTDjgajjgZnjgovjgIIKdm9pZCBzb3J0MyhpbnQgKm4xLCBpbnQgKm4yLCBpbnQgKm4zKQp7CiAgaW50IG5bM107CgogIG5bMF09Km4xOwogIG5bMV09Km4yOwogIG5bMl09Km4zOwogIGZvcihpbnQgaT0wOyBpPDM7IGkrKykgewogICAgZm9yKGludCBqPWkrMTsgajwzOyBqKyspIHsKICAgICAgaWYobltpXT5uW2pdKSB7CiAgICAgICAgaW50IHQ9bltpXTsKICAgICAgICBuW2ldPW5bal07CiAgICAgICAgbltqXT10OwogICAgICB9CiAgICB9CiAgfQogICpuMT1uWzBdLCAgKm4yPW5bMV0sICAqbjM9blsyXTsKfQoKLy8gKDMp6KaB57Sg5pWwbuWAi+OBrmludOWei+mFjeWIlyBhIOOBruWQhOaIkOWIhuOBruWApOOCkjLlgI3jgZfjgZ/jgoLjga7jgpLliKXjga7phY3liJdi44Gr5Luj5YWl44GZ44KL6Zai5pWwICB2b2lkIGF0b2IoaW50ICphLCBpbnQgKmIsIGludCBuKSDjgpLkvZzmiJDjgZvjgojjgILjgZPjgZPjgadhLGLjgavjga/jg53jgqTjg7Pjgr/jgpLnlKjjgYTjgovjgZPjgajjgIIKLy8g44GT44Gu6Zai5pWw44KS55So44GE44GmaW505Z6L6YWN5YiXIHZhPSgxLCAyLCAxKSDjga7lkITmiJDliIbjga7lgKTjgpLvvJLlgI3jgZfjgZ/jgoLjga7jgpLliKXjga7phY3liJcgdmLjgavku6PlhaXjgZfjgIF2YuOBruWQhOaIkOWIhuOCkuWHuuWKm+OBmeOCi+ODl+ODreOCsOODqeODoOOCkuS9nOaIkOOBm+OCiOOAggp2b2lkIGF0b2IoaW50ICphLCBpbnQgKmIsIGludCBuKQp7CiAgZm9yKGludCBpPTA7IGk8bjsgaSsrKWJbaV09YVtpXSphW2ldOwp9CgppbnQgbWFpbigpCnsKICAvLygxKQogIGNvdXQgPDwgZW5kbCA8PCAiKDEpIiA8PCBlbmRsOwogIGZvcihpbnQgcj0wOyByPD01OyByKyspCiAgICBjb3V0IDw8ICJyPSIgPDwgciA8PCAnOicgPDwgY29tYmluYXRpb24oNSxyKSA8PCBlbmRsOwoKICAvLygyKQogIGNvdXQgPDwgZW5kbCA8PCAiKDIpIiA8PCBlbmRsOwogIGludCAgYTE9MywgYTI9MSwgYTM9MDsKICBjb3V0IDw8ICJiZWZvcmUgc29ydCA9ICIgPDwgYTEgPDwgJyAnPDwgYTIgPDwgJyAnIDw8IGEzIDw8IGVuZGw7CiAgc29ydDMoJmExLCZhMiwmYTMpOwogIGNvdXQgPDwgImFmdGVyICBzb3J0ID0gIiA8PCBhMSA8PCAnICc8PCBhMiA8PCAnICcgPDwgYTMgPDwgZW5kbDsKCiAgLy8oMykKICBjb3V0IDw8IGVuZGwgPDwgIigzKSIgPDwgZW5kbDsKICBpbnQgdmFbXT0gezEsIDIsIDF9LCB2YlszXTsKICBmb3IoaW50IGk9MDsgaTwzOyBpKyspY291dCA8PCAidmEoIiA8PCBpIDw8ICIpPSIgPDwgdmFbaV0gPDwgZW5kbDsKICBhdG9iKHZhLHZiLDMpOwogIGNvdXQgPDwgZW5kbDsKICBmb3IoaW50IGk9MDsgaTwzOyBpKyspY291dCA8PCAidmIoIiA8PCBpIDw8ICIpPSIgPDwgdmJbaV0gPDwgZW5kbDsKfQ==