Visualizzazione dei risultati da 1 a 10 su 18

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Premetto che ho commesso il tuo stesso errore di valutazione , e ho trovato il problema dopo averci
    pensato un po

    *j++ , apparentemente si potrebbe pensare che incrementa di 1 il valore
    ma per questione di precedenza di operatori , incrementa di uno il puntatore e poi dereferenzia


    quindi o usi le parentesi per cambiare la precedenza o usi l'operatore +=1

    codice:
    void insjob(char job[][20],int tempo[0],int esec[0],int*j){
         if(*j!=MAX){
           printf("\n\tInserisci nome: ");
           scanf("%s",&job[*j]);
           printf("\n\tInserisci tempo di esecuzione: ");
           scanf("%d",&tempo[*j]);
           esec[*j]=0;
           //*j++;
            (*j)++;
         }else{
          printf("\n\t!! Memoria piena, impossibile inserire altri job !!");     
         }
         return;
         }
    Tecnologia

  2. #2
    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 ..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.