2017-10-15 4 views
-3

Je me demande comment les informations précédemment saisies peuvent être supprimées en utilisant la décrémentation.

   case 4: printf("Remove Employee\n"); 
        printf("===============\n"); 
        do{ 
         printf("Enter Employee ID: "); 
         scanf("%d", &number); 
         int i; 
         for(i=0;i<NOE; i--){ 
           if(number == emp[i].Int_Num){ 

            printf("Employee %d will be removed", emp[i].Int_Num); 
            // for(i=0;i<NOE; i++){ 


            -- emp[i].Int_Num, --emp[i].Salary, --emp[i].Age; 
           // scanf("%11lf", &emp[i].Salary); 
            flag = 1; 
            break; 
+1

vous souhaitez supprimer la structure employee du tableau? –

+1

S'il vous plaît fournir un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) –

+0

..ou juste marquer l'entrée comme «inutilisé»? Vous n'avez pas fourni de détails système ou d'informations sur le type de données, juste un peu de code et une exigence ( –

Répondre

0

La structure de données typique d'une collection dont le nombre d'éléments change fréquemment, dans un ordre arbitraire, est une liste chaînée. (Ou, si vous avez besoin d'un accès plus rapide et avez un critère de commande comme votre numéro d'employé, un arbre trié). Vous allouer de nouveaux éléments (ici: employés) avec malloc() et vraiment les retirer de la mémoire avec free. Sinon, s'il existe un nombre maximum d'employés connu et que vous avez suffisamment de mémoire, vous pouvez utiliser un tableau, ce que vous semblez faire ici. Le nombre d'éléments dans le tableau correspondrait au nombre maximal d'employés prévu; le programme aurait donc toujours besoin du maximum de mémoire, même avec très peu d'employés. D'autre part, l'empreinte mémoire du programme serait statiquement connue au moment de la compilation ce qui peut être un avantage.

Le nombre d'éléments dans un tableau ne peut pas être modifié (sauf si vous allouez dynamiquement tout le tableau et que vous le réaffectez si nécessaire). L'ajout de nouveaux employés ou la suppression de ceux qui existaient déjà serait fait, comme l'a suggéré Bo Persson, grâce à un marqueur pour les éléments qui sont utilisés. Cela pourrait être un drapeau booléen supplémentaire, ou une valeur spéciale dans l'un des champs existants. En effet, vous allez programmer votre propre gestion dynamique de la mémoire dynamique de cette façon, en utilisant le tableau comme une «arène». Il sera probablement plus bogué et plus lent que si vous utilisiez simplement celui intégré.