codice:
#include <iostream>
#include <vector>
#include <sstream>
#include <set>
#include <fstream>
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <windows.h>
#include <sstream>
#include <iomanip>
#include <windows.h>

using namespace std;

template <class T>
void init(vector<T>& v,unsigned int n, ...)
{
    T temp;
    va_list vl;
    va_start(vl,n);
    for(unsigned int j=0;j<n;j++)
    {
        temp=va_arg(vl,T);
        v.push_back(temp);
    }
    va_end(vl);
}



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

string Tostring(int number) 
{ 
    std::stringstream out; 
    out << number; 
    return out.str(); 
} 



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

vector<int>vettore;    
    
init(vettore,30,3,4,7,10,16,22,23,30,35,36,38,46,49,55,57,58,60,61,66,67,73,75,76,77,78,80,82,87,89,90);    

string numeroscelto;
string s;  
string s2;
set<int>::iterator it;
set<int>::iterator it2;

int numero2;

string combinazioneintera; 

vector <string> vettorecombinazione;
vector<string>insiemecombinazioni;
vector<string>insiemecombinazioni2;
 
set<int>combinazione;
set<int>combinazione2;

int primo,secondo,terzo,quarto,quinto,sesto,settimo,ottavo,nono,decimo,undicesimo,dodicesimo;
int tredicesimo,quattordicesimo,quindicesimo,sedicesimo,diciasettesimo,diciottesimo,diciannovesimo;
int ventesimo,ventunesimo,ventiduesimo,ventitreesimo,ventiquattresimo,venticinquesimo,ventiseiesimo;
int ventisettesimo,ventottesimo,ventinovesimo,trentesimo;
int n31,n32,n33,n34,n35,n36,n37,n38,n39,n40,n41,n42,n43,n44,n45,n46,n47,n48,n49,n50;
int n51,n52,n53,n54,n55,n56,n57,n58,n59,n60,n61,n62,n63,n64,n65,n66,n67,n68,n69,n70;
int n71,n72,n73,n74,n75,n76,n77,n78,n79,n80;


int estratti=1, numero,numeri,combinazioni,inizio,fine,finale,numero3,k,z,i;
int comb=1;

int numeri1,numeri2,numeri3,numeri4,numeri5,numeri6,numeri7,numeri8,numeri9,numeri10;

bool continua=true;


  system("color 0a");

  cout << "\n"<<endl;
  cout << "Quanti numeri x tip1?: ";
  cin >> numeri1;
  cout << "Quanti numeri x tip2?: ";
  cin >> numeri2;
    cout << "\n"<<endl;
  cout << "Quante combinazioni x ogni tip?: ";
  cin >> combinazioni;
  cout << "\nNumero iniziale?: ";
  cin >> inizio;
  cout << "\nNumero finale?: ";
  cin >> fine;
  

finale=fine-(inizio+1); 
srand(time(0));


//PROVA GENERAZIONE PER 2 TIPOLOGIE (TIP) DI COMBINAZIONI ALLA VOLTA

//disabilitando un TIP alla volta l'altro funziona insieme.. NO :( 

//TIP1 


if (numeri1!=0) {  
while(continua==true){
if(insiemecombinazioni.size() == combinazioni){
continua=false;
} else {
s="";
combinazione.clear();




while (combinazione.size()<numeri1) {
numero = rand() % (finale+2)  + inizio; 
cout << combinazione.size();
//versione + pratica...
if(std::find(vettore.begin(), vettore.end(), numero)==vettore.end())
{
//non fare nulla...
}
//altrimenti...
else {
//inserisci in combinazione
combinazione.insert(numero);
}           
cout << combinazione.size();
}
}
for (it=combinazione.begin(); it!=combinazione.end(); it++) {
s += intToString(*it)+",";   
}
int ultimocarattere;
ultimocarattere=s.size();
insiemecombinazioni.push_back(s);
}



//TIP2 


if (numeri2!=0) {  
while(continua==true){
if(insiemecombinazioni2.size() == combinazioni){
continua=false;
} else {
s2="";
combinazione2.clear();

while (combinazione2.size()<numeri2) {
numero2 = rand() % (finale+2)  + inizio; 
cout << combinazione2.size();
//versione + pratica...
if(std::find(vettore.begin(), vettore.end(), numero2)==vettore.end())
{
//non fare nulla...
}
//altrimenti...
else {
//inserisci in combinazione
combinazione2.insert(numero2);
}           
cout << combinazione2.size();
}
}
for (it2=combinazione2.begin(); it2!=combinazione2.end(); it2++) {
s2 += intToString(*it2)+",";   
}
int ultimocarattere2;
ultimocarattere2=s2.size();
insiemecombinazioni2.push_back(s2);

//----------------------------------------------------------------------


}



insiemecombinazioni.pop_back();
ofstream fout;
fout.open("COMBINAZIONI-GRUPPO-DESIDERATO-2012-TIP1.txt", ios::app);
for (i=0; i<insiemecombinazioni.size();i++){ 
fout << insiemecombinazioni[i]+"\n";
cout << "Press ENTER to continue..." << endl; 
} 
cout << "\n\n";





insiemecombinazioni2.pop_back();
ofstream fout2;
fout2.open("COMBINAZIONI-GRUPPO-DESIDERATO-2012-TIP2.txt", ios::app);
for (i=0; i<insiemecombinazioni2.size();i++){ 
fout2 << insiemecombinazioni2[i]+"\n";
cout << "Press ENTER to continue..." << endl; 
} 



cout << "\n\n";

}
}
}
Disabilitando un TIP alla volta commentandolo l'altro TIP (sono 2) funziona... attivandoli insieme (decommentando l'altro) il programma crasha...

Ho cercato e ricercato l'errore senza trovarlo...

Grazie a chi mi aiuta a trovarlo...