salve, ho un problema con un esercizio di c che sto provando a fare, il programma dovrebbe servire a generare un numero di giocate che decide l'utente (compreso tra 1 e 20) del gioco del superenalotto (quindi con 6 numeri random estratti per ogni giocata), sono partito a scrivere il codice dal ciclo più interno, e quindi ho strutturato il programma per generare una sola giocata senza lasciare all'utente la scelta del numero delle stesse, e tutto sembrava andare bene e funzionare a dovere, dopo di che ho aggiunto un ultimo ciclo esterno a tutto che servisse a far girare il programma il numero di volte desiderato per generare il numero di giocate richieste dall'utente. Quando ho inserito questo ultimo ciclo sono iniziati i problemi, perchè da quel momento il programma ha smesso di funzionare correttamente sotto linux e con il compilatore codeblocks che è quello che ho usato dall'inizio dello sviluppo ed adesso ho verificato che però continua a funzionare sotto windows xp e devcpp....
Vi allego il codice, spero possiate spiegarmi come mai questo strano strano problema. grazie.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void genera_colonne(int giocata,int num,int *vett);
void ordina_vett(int num_dati,int *vett);

int main()
{
int num_giocate, numero, norm_rand, i, indice_giocate, num_dati=6;
int vett[6];

srand(time(NULL));
printf("Inserire il numero di giocate da generare[1-20]: \n");
scanf("%d",&num_giocate);
printf("%d",num_giocate);
for(indice_giocate=0;indice_giocate<num_giocate;indice_giocate++)
{
for (i=0;i<6;i++)
    {
        numero=rand();
        //printf("Numero casuale: %d\n",numero);
        norm_rand=numero%90;
        if(norm_rand==0)
            norm_rand=1;
        //printf("Numero normalizzato: %d\n",norm_rand);
        genera_colonne(i,norm_rand, vett);
        //printf("Numero %da colonna: %d\n",i+1,vett[i]);
    }

printf("Giocata n.%d\n",indice_giocate+1);
for (i=0;i<6;i++)
    printf("%da colonna: %d\n",i+1,vett[i]);
ordina_vett(num_dati,vett);
printf("\n");
}
return(1);
}

void genera_colonne (int giocata,int num, int *vett)
{
int i=0, i_esimo;

while (i<num)
    {
        i++;
        i_esimo=rand()%90;
        if(i_esimo==0)
            i_esimo++;

    }
vett[giocata]=i_esimo;


}

void ordina_vett(int num_dati,int *vett)
{
typedef enum {false,true} boolean;
int scambio,indice,prov;
scambio=true;
while(scambio)
{
    scambio=false;
    for (indice=0;indice<num_dati;indice++)
        if(vett[indice]>vett[indice+1])
            {
                prov=vett[indice];
                vett[indice]=vett[indice+1];
                vett[indice+1]=prov;
                scambio=true;
                }
    }



}