J'essaye de supprimer un nombre d'un tableau à une position donnée.
DANS MON CODE: le tableau comporte 5 nombres, 3 6 5 2 4. Je veux supprimer le numéro à la position 2 qui est 5. La sortie après suppression devrait être 3 6 2 4. mais j'obtiens 3 6 2 2 4 une aide?
MON CODE:
#include<stdio.h> int main(void){ int n; int i; int position; int a[10]; printf("Enter how many numbers\n"); scanf("%d",&n); printf("Enter the numbers\n"); for(i=0;i<n;i++){ scanf("%d",&a[i]); } printf("Enter the position of the number you want to delete\n"); scanf("%d",&position); for(i=0;i<n;i++){ while(i == position){ a[i] = a[i+1]; i = i+1; } } printf("Elements after:\n"); for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; }
3 Réponses :
#include <string.h> #include <stdio.h> ... int text[100]=[1,2,3]; int pos=2; char re[100]=""; int i=0; int a=0; for(int i=0;i<sizeof(text)/sizeof(text[0]);i++){ if(i!=pos+1){ re[a]=text[i]+''; a++; } i++; } ...
C ++ et C sont des langages différents
@BillLynch Oh, je suis désolé, et je change le code maintenant. Merci
// To delete a number from the array, we need to shift all of the // further numbers down one spot. Note that we start the loop at the // index of the entry we wish to delete. for(i = position; i < n; i++) { a[i] = a[i+1]; } // Once we've completed the shift, the array is now smaller. n = n - 1;
Qu'en est-il de l'espace pour ce tableau alloué en mémoire? Est-il nécessaire d'utiliser realloc()
dans ces circonstances? Ne devrions-nous pas allouer une mémoire de taille réduite?
@black: Vous pourriez. Vous n'êtes pas obligé. Dans la question, le tableau est alloué par pile, vous ne pouvez donc pas utiliser de réallocation pour cela.
Pourriez-vous expliquer un peu plus s'il vous plaît? Que dois-je utiliser dans ce cas?
Vous ne pouvez pas réduire un tableau alloué par pile.
Décrémentez la taille de votre tableau n
après avoir terminé le décalage et vous pouvez également y parvenir en
for(i = position; i < n; i++) { a[i] = a[i+1]; } n--;
Les
while
les sorties en boucle après une itération , cari
est incrémentée, et donc plus égale à laposition
. De plus, après avoir supprimé un élément, vous devez décrémentern
, car le nombre d'éléments a été réduit.