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

Rispondi quotando