Progetto GTK in C

di il
5 risposte

Progetto GTK in C

Sto sviluppando un progetto GTK per l'università. Mi era venuto in mente di fare l'estrazione di una tombola. Quindi ad ogni click di un particolare button viene estratto un numero e a tale numero vengono inserite delle parentesi per indicare il fatto che sia uscito. Tuttavia ho dei problemi nella creazione dei 90 numeri tutti diversi. Ovvero quando clicco il suddetto button,noto che l'interfaccia grafica mi va a visualizzare ad ogni click solo il 90esimo elemento del ciclo for della creazione dei numeri. Quindi ovviamente capitano diverse ripetizioni nel programma. Sperando che mi possiate aiutare allego alcune foto del comportamento ed il codice di quella parte di progetto.Questa parte di progetto è un sottoprogramma che poi richiamo nel main.

void button91_click()
{

GtkWidget *label;
    label=GTK_WIDGET(gtk_builder_get_object(builder,"label1"));

int tombola[90];
char str[100]="Il numero estratto e':   ";

int a;
int a1,a2;
int n=90;
srand(time(NULL));
    for(int i=0;i<n;i++)
    {     tombola[i]= rand() %90+1;
      a=tombola[i];
    for(int j=0;j<i;j++)
      {  if(tombola[i]==tombola[j])

        i--;
    }

    }
    for(int i=0;i<n;i++)
    {
        sprintf(&str[22],"%d",tombola[i]);
         printf("%d\n ",tombola[i]);
    }

            gtk_label_set_text(GTK_LABEL(label),str);
char stringa[]="button  "; //mi chiama il button da glade
if(a>=10)
{
     a1=a/10;
    a2=a%10;
stringa[6]=a1+'0';
stringa[7]=a2+'0';
}
else{

       stringa[6]=0+'0';
            stringa[7]=a+'0';}

         GtkWidget *button;

        button=GTK_WIDGET(gtk_builder_get_object(builder,stringa));
 char stringa2[]="(  )";



 if(a<10)
 {


     stringa2[1]=' ';
     stringa2[2]=a+'0';
 }
 else
 {
     a1=a/10;
    a2=a%10;
     stringa2[1]=a1+'0';
 stringa2[2]=a2+'0';
 }

gtk_button_set_label(GTK_BUTTON(button),stringa2);

}

5 Risposte

  • Re: Progetto GTK in C

    Comportamento del progetto
    https://ibb.co/ZGJ93S
  • Re: Progetto GTK in C

    Racchiudi il tuo codice sorgente tra i due tag 'code' (pulsante '</>' dell'editor del forum), altrimenti non si capisce!
  • Re: Progetto GTK in C

    Ok fatto !
  • Re: Progetto GTK in C

    Capisco che il programma possa essere lungo, ma se non lo possiamo riprodurre è difficile capire dove "tocca"...
    Comunque, se non ho capito male, dalla tua descrizione sembra che il problema stia qui:
    for(int i=0; i<n; i++)
    {
        sprintf(&str[22],"%d",tombola[i]);
        printf("%d\n ",tombola[i]);
    }
    In pratica sovrascrivi 90 volte la stringa "str", e l'ultima sovrascrittura è il numero '90'.
  • Re: Progetto GTK in C

    Si infatti il problema è proprio il ciclo for. Fortunatamente poi sono riuscito a risolvere questo problema utilizzando un algoritmo per numeri diversi che non dipendesse da un for. In tal modo mi va a stampare tutto correttamente.
    Grazie mille anche per l'aiuto e l'osservazione
Devi accedere o registrarti per scrivere nel forum
5 risposte