सभी तत्वों को एक इकाई द्वारा स्थानांतरित किया जाता है, जिसमें अंतिम तत्व शुरुआत के आसपास लपेटता है।
[0,1,3,3,4], इसे [4,0,1,3,3] शामिल करने के लिए संशोधित किया जाएगा, हालांकि यह इसे [4,0,3,3,3] शामिल करने के लिए अद्यतन करता है।
void shiftRight(int arr[], int n) {
int temp = arr[n - 1];
const int *end = arr + n - 1;
for (const int *i = end; i > arr; i--) {
arr[*i] = arr[*i - 1];
}
arr[0] = temp;
}
सरणी अनुचित रूप से अद्यतन किया गया है। मैं सरणी अद्यतन के साथ क्या गलत कर रहा हूँ?
1 उत्तर
आप इंडेक्स के साथ अपने पॉइंटर को अपनी सरणी में भ्रमित कर रहे हैं:
arr[*i] = arr[*i - 1]
आप i
की तुलना arr
से कर रहे हैं जो एक बड़ी गलती का संकेत देता है! आपका लूप वास्तव में है:
int *end = arr + n - 1;
for (int *i = end; i > arr; i--) {
*i = *(i - 1);
पॉइंटर्स const
नहीं हो सकते हैं, आप अपनी सरणी को संशोधित कर रहे हैं।
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।