समस्या
एक C प्रोग्राम लिखें जो रनटाइम पर उपयोगकर्ता द्वारा ऐरे से एक एलिमेंट को डिलीट करे और डिलीशन के बाद परिणाम को स्क्रीन पर प्रदर्शित करे। यदि डिलीट किया जाने वाला एलिमेंट ऐरे में नहीं है, तो "Invalid Input" प्रदर्शित करें।
समाधान
एक ऐरे का उपयोग सामान्य एलिमेंट्स के समूह को एक नाम के तहत रखने के लिए किया जाता है।
ऐरे ऑपरेशन्स निम्नलिखित हैं:
- इन्सर्ट (Insert)
- डिलीट (Delete)
- सर्च (Search)
एल्गोरिथ्म
पॉइंटर्स की सहायता से ऐरे में एलिमेंट्स को डिलीट करने का एल्गोरिथ्म:
- एलिमेंट्स की संख्या घोषित करें और पढ़ें।
- रनटाइम पर ऐरे का आकार घोषित करें और पढ़ें।
- ऐरे एलिमेंट्स इनपुट करें।
- एक पॉइंटर वेरिएबल घोषित करें।
- रनटाइम पर डायनामिक रूप से मेमोरी आवंटित करें।
- डिलीट किए जाने वाले एलिमेंट को दर्ज करें।
- डिलीशन के बाद, एलिमेंट्स को एक पोजीशन बाईं ओर शिफ्ट किया जाता है।
उदाहरण
ऐरे का आकार: 5
ऐरे एलिमेंट्स निम्नलिखित हैं:
1 2 3 4 5
डिलीट किए जाने वाले एलिमेंट की पोजीशन दर्ज करें: 4
आउटपुट निम्नलिखित है:
डिलीशन के बाद ऐरे एलिमेंट्स हैं: 1 2 3 5
C प्रोग्राम
पॉइंटर्स की सहायता से ऐरे में एलिमेंट्स को डिलीट करने का C प्रोग्राम:
#include <stdio.h>
#include <stdlib.h>
void delete(int n, int *a, int pos);
int main() {
int *a, n, i, pos;
printf("ऐरे का आकार दर्ज करें: ");
scanf("%d", &n);
a = (int*)malloc(sizeof(int) * n);
printf("एलिमेंट्स दर्ज करें:\n");
for(i = 0; i < n; i++) {
scanf("%d", (a + i));
}
printf("डिलीट किए जाने वाले एलिमेंट की पोजीशन दर्ज करें: ");
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("डिलीशन के बाद ऐरे एलिमेंट्स हैं:\n");
for(i = 0; i < n - 1; i++) {
printf("%d\n", (*(a + i)));
}
} else {
printf("Invalid Input");
}
}
आउटपुट
जब उपरोक्त प्रोग्राम निष्पादित होता है, तो यह निम्नलिखित आउटपुट उत्पन्न करता है:
ऐरे का आकार दर्ज करें: 5 एलिमेंट्स दर्ज करें: 12 34 56 67 78 डिलीट किए जाने वाले एलिमेंट की पोजीशन दर्ज करें: 4 डिलीशन के बाद ऐरे एलिमेंट्स हैं: 12 34 56 78