समस्या
उपयोगकर्ता द्वारा रनटाइम पर एक सरणी से एक तत्व को हटाने के लिए एक सी प्रोग्राम लिखें और परिणाम को हटाने के बाद स्क्रीन पर प्रदर्शित किया जाए। यदि हटाया गया तत्व किसी सरणी में नहीं है, तो हमें अमान्य इनपुट प्रदर्शित करने की आवश्यकता है।
समाधान
एक नाम के तहत सामान्य तत्वों के समूह को रखने के लिए एक सरणी का उपयोग किया जाता है।
सरणी संचालन इस प्रकार हैं -
- सम्मिलित करें
- हटाएं
- खोज
एल्गोरिदम
पॉइंटर्स की मदद से तत्वों को एक सरणी में हटाने के लिए एक एल्गोरिदम देखें।
चरण 1 - तत्वों की संख्या घोषित करें और पढ़ें।
चरण 2 - रनटाइम पर सरणी आकार घोषित करें और पढ़ें।
चरण 3 - सरणी तत्वों को इनपुट करें।
चरण 4 - एक सूचक चर घोषित करें।
चरण 5 - रनटाइम पर मेमोरी को गतिशील रूप से आवंटित करें।
चरण 6 - एक तत्व दर्ज करें जिसे हटाया जाना है।
चरण 7 - हटाने के बाद, तत्वों को एक स्थान से बाईं ओर स्थानांतरित कर दिया जाता है।
उदाहरण
सरणी का आकार है:5
सरणी तत्व इस प्रकार हैं -
1 2 3 4 5
हटाए जाने वाले तत्व की स्थिति दर्ज करें:4
आउटपुट इस प्रकार है -
After deletion the array elements are: 1 2 3 5
उदाहरण
पॉइंटर्स की मदद से तत्वों को एक सरणी में सम्मिलित करने के लिए सी प्रोग्राम निम्नलिखित है -
#include<stdio.h> #include<stdlib.h> void delete(int n,int *a,int pos); int main(){ int *a,n,i,pos; printf("enter the size of array:"); scanf("%d",&n); a=(int*)malloc(sizeof(int)*n); printf("enter the elements:\n"); for(i=0;i<n;i++){ scanf("%d",(a+i)); } printf("enter the position of element to be deleted:"); scanf("%d",&pos); delete(n,a,pos); return 0; } void delete(int n,int *a,int pos){ int i,j; if(pos<=n){ for(i=pos-1;i<n;i++){ j=i+1; *(a+i)=*(a+j); } printf("after deletion the array elements is:\n"); for(i=0;i<n-1;i++){ printf("%d\n",(*(a+i))); } } else{ printf("Invalid Input"); } }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्न आउटपुट उत्पन्न करता है -
enter the size of array:5 enter the elements: 12 34 56 67 78 enter the position of element to be deleted:4 After deletion the array elements are: 12 34 56 78