इस सवाल का पहले से ही एक उत्तर है: < / P>
- 4 जवाब
मैंने गिनती के लिए एक फ़ंक्शन लिखा था किसी पाठ में विशिष्ट शब्द की आवृत्ति। इस कार्यक्रम में हर बार शून्य लौटाता है। मैं इसे कैसे सुधार सकता / सकती हूं?
जबकि (fgets (वाक्य, आकार का वाक्य, cfPtr)) {for (j = 0; J & lt; total4; j ++) {आवृत्ति [j] = तुलना (वाक्य, & amp; w); all_frequency + = आवृत्ति [जे]; }}। । । इंट कंपीशन (कॉन्स्ट चार्ल्स [], चार * डब्ल्यू) {इंट लंबाई = 0, गणना = 0, एल = 0, आई; लंबाई = स्ट्रेलन (वाक्य); एल = स्ट्रेलन (डब्ल्यू); जबकि (वाक्य [i]! = '\ N') अगर (strncmp (वाक्य, डब्ल्यू, एल)) गणना ++; i ++; वापसी की गणना; }
मैंने आपके कोड को ठीक किया है और कोडन शैली और चर नामों पर टिप्पणी की है। अभी भी एक दोष है जो मैं सशर्त के साथ छोड़ा है, जो वाक्य के माध्यम से दोबारा नहीं होने के कारण है।
यहाँ आपका कोड चिह्नित है:
जबकि (fgets (वाक्य , Sizeof वाक्य, cfPtr)) {for (j = 0; j & lt; total4; j ++) {आवृत्ति [j] = तुलना (वाक्य, & amp; w); all_frequency + = आवृत्ति [जे]; }} // पूर्णांक तुलना (const char वाक्य [], char * w) w इस मामले में एक खराब चर नाम है। इंट की तुलना (कॉन्स्ट चार्ल्स [], चार * वर्ड) // शब्द एक बेहतर नाम है {// पूर्णांक लंबाई = 0, गणना = 0, एल = 0, आई; // प्रत्येक चर को अपनी लाइन मिलनी चाहिए // भी, मुझे आरम्भ किया जाना चाहिए और मैं अनावश्यक है // यहां ठीक से शुरू किए गए चर: int length = 0; Int count = 0; Int i = 0; // लंबाई = स्ट्रेलन (वाक्य); यह बेमानी है, जैसा कि आप जानते हैं कि लाइन '\ n' लंबाई = स्ट्रेलन (शब्द) पर समाप्त होती है; // एल लंबाई के साथ बदल दिया है // जबकि (वाक्य [आई]! = '\ N') // एक incrementor और if स्टेटमेंट ब्लॉक के अंदर संग्रहीत किया जाना चाहिए // (कर्ली ब्रेसिज़ के लिए औपचारिक नाम) जबकि (वाक्य [i]! = '\ N') {यदि (strncmp (वाक्य, शब्द, लंबाई) == 0) // strncmp 0 बराबर देता है, तो आप + +; // समानता के लिए 0 से तुलना करना चाहिए I ++; } वापसी की गणना; }
No comments:
Post a Comment