引数40個までで、実装してみました。
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
/*↑
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
の代わり(警告対策)*/
class Input{
int value;
bool isendmark;
public:
Input(int invalue){
value=invalue;
isendmark=false;
}
Input(){
value=-1;//適当に代入しておく(警告封じ)。
isendmark=true;
}
bool IsEndMark()const{
return isendmark;
}
int GetValue()const{
return value;
}
};
void RandNum(int *Num,
const Input&arg1=Input(),
const Input&arg2=Input(),
const Input&arg3=Input(),
const Input&arg4=Input(),
const Input&arg5=Input(),
const Input&arg6=Input(),
const Input&arg7=Input(),
const Input&arg8=Input(),
const Input&arg9=Input(),
const Input&arg10=Input(),
const Input&arg11=Input(),
const Input&arg12=Input(),
const Input&arg13=Input(),
const Input&arg14=Input(),
const Input&arg15=Input(),
const Input&arg16=Input(),
const Input&arg17=Input(),
const Input&arg18=Input(),
const Input&arg19=Input(),
const Input&arg20=Input(),
const Input&arg21=Input(),
const Input&arg22=Input(),
const Input&arg23=Input(),
const Input&arg24=Input(),
const Input&arg25=Input(),
const Input&arg26=Input(),
const Input&arg27=Input(),
const Input&arg28=Input(),
const Input&arg29=Input(),
const Input&arg30=Input(),
const Input&arg31=Input(),
const Input&arg32=Input(),
const Input&arg33=Input(),
const Input&arg34=Input(),
const Input&arg35=Input(),
const Input&arg36=Input(),
const Input&arg37=Input(),
const Input&arg38=Input(),
const Input&arg39=Input(),
const Input&arg40=Input()
){
Input arglist[/url]={
arg1,
arg2,
arg3,
arg4,
arg5,
arg6,
arg7,
arg8,
arg9,
arg10,
arg11,
arg12,
arg13,
arg14,
arg15,
arg16,
arg17,
arg18,
arg19,
arg20,
arg21,
arg22,
arg23,
arg24,
arg25,
arg26,
arg27,
arg28,
arg29,
arg30,
arg31,
arg32,
arg33,
arg34,
arg35,
arg36,
arg37,
arg38,
arg39,
arg40
};
int count;
for(count=0;count<sizeof(arglist)/sizeof(arglist[0]);count++){
if(arglist[count].IsEndMark())break;
}
if(count<1)return ;
*Num=arglist[rand()%count].GetValue();
}
int main()
{
int rnum;
srand((unsigned)time(0));
RandNum(&rnum,10,30,65,20,54,42);
printf("%d\n",rnum);
return 0;
}
コードがめちゃくちゃですが、一応動作チェックはしています。