Questo il mio cod finora:

codice:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <stdlib.h>
#include <ctime>
#include <list>


using namespace std;

string intToString(int value) {
    stringstream ss;
    ss << value;
    return ss.str();
}

//Replaces all the instances of search with replace in string; returns the number of substitutions done
unsigned int ReplaceString(std::string & string,const std::string & search,const std::string & replace)
{
	unsigned int ret=0;
	for(std::string::size_type pos=string.find(search);pos!=string.npos;ret++,pos=string.find(search,pos))
	{
		string.replace(pos,search.length(),replace);
		pos+=replace.length();
	}
	return ret;
}



int main (int argc, char *argv[]) {

vector<string> vec;

list<int> listacombinazione;

int contaterzina=0;

int contatore=0;
int conteggio=0;
vector<int> ritardi;
vector<string> terzineconritardi;


 
  int numeri,i,combinazioni,z,numero,k,inizio,fine,finale;
  
  srand((unsigned)time(NULL));
  
  vector<string> combinazione;
   vector<string> insiemecombinazioni;
  
  //PROGRAMMA PRINCIPALE
  system("color 0a");
  cout << "------------------------------------------"<<endl;
  cout << "TITOLO PRG"<<endl;
  cout << "sottotitolo prg"<<endl;
  cout << "------------------------------------------"<<endl;
  cout << "\n"<<endl;
  cout << "Quanti numeri?: ";
  cin >> numeri;
   cout << "\n"<<endl;
  cout << "Quante combinazioni?: ";
  cin >> combinazioni;
  cout << "\nNumero iniziale?: ";
  cin >> inizio;
  cout << "\nNumero finale?: ";
  cin >> fine;
  
  //parametri fissi di esempio 
  //inizio=1;
  //fine=90;
  
  //ESTRAZIONE
  
  finale=fine-(inizio+1); 
  
  string combinazioneintera;
  
  if (numeri!=0) {  
          
          cout << "\n"; 
          cout << "Numeri:";
          cout << "\n\n";
          for (k=0;k<combinazioni;k++) {
          
          for (z=0;z<numeri;z++) {
          
          numero = rand() % finale  + inizio;
 
          cout << numero << ","; 
          
          
          
          listacombinazione.push_back(numero);
          
          //X CERCARE DI AVERE SOLO VALORI UNIVOCI...
          
          listacombinazione.unique();
          
          
          //-------------------------------------------
           
          
          
         
          }

          

         int c; 
     

    for (list<int>::iterator it=listacombinazione.begin(); it!=listacombinazione.end(); it++) { 
        c=0; 
        for(list<int>::iterator et=listacombinazione.begin(); et!=listacombinazione.end(); et++) 
            if(*et == *it) 
                c++; 

        if(c == 1) 
            combinazioneintera += intToString(*it) + ","; 
     } 
     //cout<<s.substr(0, s.length()-1)<<endl;

          
          cout << "\n";
          
          cout << "VERIFICA1 COMB. INTERA:\n";
          cout << combinazioneintera;
          cout << "\n";
          
          cout << "LUNGHEZZA:\n";
          cout << combinazioneintera.size();
          cout << "\n";
          
          
          int ultimocarattere=combinazioneintera.size();         
          
          //provo a togliere la virgola finale...
          
          cout << "STRINGA PULITA DALL'ULTIMO CARATTERE (virgola):\n";
          //cout << combinazioneintera.erase(5,2);
          //cout << combinazioneintera;
          string p1 = combinazioneintera.substr(ultimocarattere-1,2);
          //cout << p1;
          cout << combinazioneintera.erase(ultimocarattere-1,2);
          
          cout << "\n";
          
          cout << "CANCELLAZIONE DELLA STRINGA CON DOPPIONI...";
      


 
 cout << "\n\n\n"; 
cout << "ATTESA:..\n\n" << endl;
cout << "\n"; 
cin.get();
 
  
          insiemecombinazioni.push_back(combinazioneintera);

           combinazioneintera="";
           //AZZERAMENTO LISTA...
           listacombinazione.clear();
          
          
          }
        
          
           cout << "\nLETTURA DI TUTTO L'INSIEME DELLE SINGOLE COMBINAZIONI SEPARATE:\n\n";
          
           for (i=0; i<insiemecombinazioni.size();i++){ 
             
             cout << insiemecombinazioni[i]+"\n"; 
               
          } 
          
          cout << "\n\n";


            }

           
    ofstream fout;
	fout.open("combinazioni10elottoragionate.txt", ios::app);
	for (i=0; i<insiemecombinazioni.size();i++){ 
	fout << insiemecombinazioni[i];
	fout << "\n";
	} 



  //FINE      
  cout << "\n"<<endl;  
  cout << "Premi un tasto per uscire . . .\n\n";
  system("PAUSE>NUL");	
  //return 0;
In sostanza funzia tutto alla grande tranne il fatto che le combinazioni generate con valori tutti univoci come voluto... sono anche composte da elementi in numero inferiore a quello richiesto in input.. (numeri)

Alla fine cioè avrò combinazioni che per l'eliminazione dei doppioni saranno.. di varie misure...
per quanto riguarda i loro elementi costituenti...

Es.. richiedo in fase di input con il parametro numeri quanti numeri per ciascuna combinazione... Digito 10 ... Bene.. dopo l'eliminazione degli eventuali doppioni ci saranno combinazioni si di 10 elementi ma anche purtroppo combinazioni di 8, 6 4 elementi e cosi' via mentre dovrebbero essere tutte di 10.. ma non so come fare l'iterazione necessaria...

VVoVe: