Grazie mille torn, ci avevo pensato anche io. Ultima cosa, quando vado a eseguire un job, lui mi esegue il job che è più veloce quindi con il minor tempo di esecuzione e va benissimo fino qui, poi quando vado a eliminare i job eseguiti, non mi fa visualizzare i job rimasti, come se li eliminasse tutti quanti e invece dovrebbe eliminare solo il job eseguito ..
codice:
void execute(char job[][20],int tempo[0],int esec[0]){     int minore,indice,i;
     indice = 0;
     minore = tempo[0];
     for(i=0;i<MAX;i++){
       if(job[i][0]!='x'){
       if(tempo[i]<minore){
         minore = tempo[i];
         indice = i;
         }
       }                                   
     }
     printf("Programma in esecuzione: %s",job[indice]);
     sleep(tempo[indice]*100);
     esec[indice] = 1;
     job[indice][0] = 'x';
     return;
     }


 void eliminatejob(char job[][20],int tempo[0],int esec[0]){
     int i;
     for(i=0;i<MAX;i++){
       if(job[i][0] != 'x'){
         if(esec[i] = 1){
         job[i][0] = 'x';
         tempo[i] = 0;
         esec[i] = 0;
         }
       }                                
     }
     printf("Programmi rimasti: ");
     for(i=0;(i<MAX);i++){
        if(job[i][0]!='x'){
        printf("\n\t %s - %d - %d\n",job[i],tempo[i],esec[i]);
        }
     }
     return;
     }
Guardandolo così sembra che non ci sia nessun problema perchè, ogni for visualizza solo i job inseriti e non quelli che hanno la 'x' diciamo così, dopo che ho eseguito il job gli da il nome 'x' così non lo visualizza e simula l'eliminazione. Il problema è che sembra che gli elimina tutti ..