Sunday, 15 June 2014

algorithm - having a difficulty with making a palindrome program c++ -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 7 जवाब

नमस्ते यह मेरा कोड है Palindrome प्रोग्राम:

  शून्य palindrome () {string input; बूल चेक इनपुट, पिलंड्रोम; Palindrome = सच; करना {checkInput = false; Cout & lt; & lt; "शब्द, वाक्यांश या वाक्य दर्ज करें: \ n"; गेटलाइन (पिन, इनपुट); (अहस्ताक्षरित int i = 0; i & lt; input.size (); i ++) {यदि (इनपुट [i] & lt; 65 || इनपुट [i]> 90 & amp; amp; amp; इनपुट [i] & lt; 97; | इनपुट [i] & gt; 122) {checkInput = true; }}} जबकि (चेकइनपुट); के लिए (अहस्ताक्षरित int i = 0, j = input.size () - 1; i & lt; input.size (); i ++, j--) {यदि (इनपुट [i]! = इनपुट [j] & amp; amp; इनपुट [i] + 32! = इनपुट [जे] & amp; amp; इनपुट [i] - 32! = इनपुट [जे]) {palindrome = false; टूटना; }} अगर (पिलिड्रोम) {cout & lt; & lt; "\ N \ n केवल अक्षर और अंक पर विचार करने के लिए: \ n"; Cout & lt; & lt; इनपुट & lt; & lt; "\ N हां, यह पलंड्रोम है! \ N"; Cout & lt; & lt; "\ T \ t दबाएं & lt; प्रविष्ट करें & gt; कुंजी वापस मेनू पर"; fflush (stdin); cin.get (); } और {cout & lt; & lt; "\ N \ n केवल अक्षर और अंक पर विचार करने के लिए: \ n"; Cout & lt; & lt; इनपुट & lt; & lt; "\ NNOPE, यह पैलंड्रोम नहीं है \ n"; Cout & lt; & lt; "\ T \ t दबाएं & lt; प्रविष्ट करें & gt; कुंजी वापस मेनू पर"; fflush (stdin); cin.get (); }}  

और जब मेरा इनपुट दौड़ कारक है तो यह पढ़ता है और कहता है यह एक पलड्रोम है, लेकिन जब मेरा इनपुट रेस कार (अंतरिक्ष के साथ) पढ़ता नहीं है और यह कहता है कि यह नहीं है एक पलंड्रोम मेरा इरादा सभी स्थानों की अनदेखी करना है किसी भी प्रकार के मदद की बहुत सराहना की जाएगी! अग्रिम धन्यवाद!

** संपादित किया गया है, इसलिए मैंने अपना पिन स्विचन किया + इनपुट को मिलना (पिन, इनपुट) और यह मुझे मेरे शब्दों या वाक्यांशों को इनपुट करने नहीं देता

समस्या

palindrome एक शब्द है जो पीछे की ओर वर्तनी और इसके आगे आगे बढ़ता है। इसलिए, आप यह सुनिश्चित कर सकते हैं कि, बाहर से जाने से, अक्षरों को एक जैसा होना चाहिए जब तक कि आप एक ही पत्र (अक्षरों की कुल संख्या अजीब) या पत्र-खोजी चीजों / परीक्षाकर्ताओं / मार्करों की जांच कर रहे हैं (चलो उन्हें इटरेटर कॉल करें) क्रॉस-क्रॉस।

आप अंदर से बाहर के अक्षरों की जांच कैसे करते हैं? पहले से किसी इंडेक्स लूप का उपयोग करके पिछले-से-पहली इंडेक्स लूप के साथ अग्रानुक्रम में पिछली स्थिति।

आप इसे कैसे करते हैं (कार्यान्वयन)

चलो बहाना करते हैं कि हम दो चर वाले हैं, Iterators के रूप में कार्य करने के लिए, i ञ। मैं आगे बढ़ूंगा, जबकि जम्मू पीछे हट जाएगी। वे विपरीत छोर से शुरू करेंगे:

  #include & lt; iostream & gt; #include & lt; स्ट्रिंग & gt; # शामिल करें & lt; एल्गोरिथम & gt; Int main () {// यह वह जगह है जहां हमारा शब्द होगा Std :: string str; // इनपुट प्राप्त करें std :: cout & lt; & lt; "अपना शब्द इनपुट करें, कृपया!" & Lt; & lt; std :: endl; Std :: getline (std :: cin, str); // चलिए स्ट्रीट :: मिटा दें, हमारे सीएसएस + 11 लाइब्रेरी & lt; एल्गोरिथ्म & gt; Str.erase (remove_if (str.begin (), str.end (), जारी करना), str.end ()); // प्रारंभ I और जे, हमारे इटरेटर // मैं ऑटो का उपयोग करता हूं क्योंकि इटरेटर प्रकार लंबा है यह एक कारण है कि ऑटो का आविष्कार किया गया था। ऑटो i = str.begin (); ऑटो जे = str.end () - 1; // तुम देखो, str.end () वास्तव में अंत है, और पिछले पत्र नहीं // यही कारण है कि इसके पास -1 है Bool is_palindrome = सच; जबकि (i & lt; j) // हालांकि दोनों ने अभी तक पार नहीं किया है // यह स्टडी :: क्वोट आपको दिखाता है कि मैं और जम्मू प्रत्येक दोहराव std :: cout & lt; & lt; "आई =" & lt; & lt; * I & lt; & lt; "||| जे =" & lt; & lt; * जे एंड एलटी; & lt; std :: endl; // अगर दो Iterators द्वारा चिह्नित दो वर्ण बराबर नहीं हैं (* i! = * J) {is_palindrome = false; टूटना; } Else {// चलो जारी रखें। ++ मैं; --j; }} // यदि लूप को इस बिंदु पर सफलतापूर्वक प्राप्त होता है, तो यह एक पलंड्रोम है अगर (is_palindrome) std :: cout & lt; & lt; Str & lt; & lt; "एक भ्रम है!" & Lt; & lt; std :: endl; Else std :: cout & lt; & lt; Str & lt; & lt; "कोई पलड्रोम नहीं है।" & Lt; & lt; std :: endl; वापसी 0; }  

उम्मीद है यह आपकी मदद करेगा। सी ++ 11 सुविधाओं के लिए -std = c ++ 11 के साथ संकलन करना याद रखें!


No comments:

Post a Comment