Seems straight forward to me. This is more academic than anything. You wouldn't do it in real life.
You will wind up with 11 functions like
string somefunc()
float somefinc(int a)
float somefunc(int a,b)
...
string somefunc(char a)
string soemfunc(char ab)
The only vague part is returning a float sorta makes no sense, because integer division is taking place, unless your result value is a float like x = a / b; where float x; If x were an int, you would lose the decimals.
Dont get thrown off by the way it should be done rather than the work that needs to be done. You definitely need an array of ints and chars to capture the input. Otherwise your code would be big, but maybe that is what the prof is looking for. Either way you'll get a passing grade. It is much easier to do
if data_type = integer
then *int ary
else *char ary
//ask for datainput
if data_type = integer
//message reads "Enter data_len integers
else
//message reads "Enter data_len characters
case datalen
0: somefunc; break;
1: somefunc(ary[0]);
2: somefunc(ary[0], ary[1]);
...
then repeating all that code over and over. The above code will definitely not compile, but then again you said you didn't need help with the coding :-)
I would throw two additional funcs in there that passes an integer pointer and a char pointer just to show that you know the right way to do things. Do your range checking in there.
float somefunc(*int a)
string somefunc(*char a)