C ++ Newbie necesita ayuda para imprimir combinaciones de enteros

Supongamos que me dan:

Un rango de enterosiRange (es decir, de1 hastaiRange) yUn número deseado de combinaciones

Quiero encontrar el número de todas las combinaciones posibles e imprimir todas estas combinaciones.

Por ejemplo:

Dado: iRange = 5 yn = 3

Entonces el número de combinaciones esiRange! / ((iRange!-n!)*n!) = 5! / (5-3)! * 3! = 10 combinaciones, y la salida es:

123 - 124 - 125 - 134 - 135 - 145 - 234 - 235 - 245 - 345

Otro ejemplo:

Dado: iRange = 4 yn = 2

Entonces el número de combinaciones esiRange! / ((iRange!-n!)*n!) = 4! / (4-2)! * 2! = 6 combinaciones, y la salida es:

12 - 13 - 14 - 23 - 24 - 34

Mi intento hasta ahora es:

#include <iostream>
using namespace std;

int iRange= 0;
int iN=0;

int fact(int n)
{
    if ( n<1)
        return 1;
    else
    return fact(n-1)*n;
}

void print_combinations(int n, int iMxM)
{
    int iBigSetFact=fact(iMxM);
    int iDiffFact=fact(iMxM-n);
    int iSmallSetFact=fact(n);
    int iNoTotComb = (iBigSetFact/(iDiffFact*iSmallSetFact));
    cout<<"The number of possible combinations is: "<<iNoTotComb<<endl;
    cout<<" and these combinations are the following: "<<endl;


    int i, j, k;
    for (i = 0; i < iMxM - 1; i++)
    {
        for (j = i + 1; j < iMxM ; j++)
        {
            //for (k = j + 1; k < iMxM; k++)
                cout<<i+1<<j+1<<endl;
        }
    }
}

int main()
{
    cout<<"Please give the range (max) within which the combinations are to be found: "<<endl;
    cin>>iRange;
    cout<<"Please give the desired number of combinations: "<<endl; 
    cin>>iN;
    print_combinations(iN,iRange);
    return 0;   
}

Mi problema: La parte de mi código relacionada con la impresión de las combinaciones funciona solo paran = 2, iRange = 4 y no puedo hacer que funcione en general, es decir, para cualquiern yiRange.

Respuestas a la pregunta(5)

Su respuesta a la pregunta