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;
}
}
}