इस समस्या में, हमें स्ट्रिंग str[] की एक सरणी दी गई है। हमारा काम सरणी में सभी स्ट्रिंग्स का स्कोर खोजना है। स्कोर को स्ट्रिंग के वर्णों के वर्णानुक्रमिक मानों के योग के साथ स्ट्रिंग की स्थिति के गुणनफल के रूप में परिभाषित किया जाता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
str[] = {“Learn”, “programming”, “tutorials”, “point” }
स्पष्टीकरण
"सीखें" की स्थिति - 1 →
sum = 12 + 5 + 1 + 18 + 14 = 50. Score = 50
"प्रोग्रामिंग" की स्थिति - 2 →
sum = 16 + 18 + 15 + 7 + 18 + 1 + 13 + 13 + 9 + 14 + 7 = 131 Score = 262
"ट्यूटोरियल" की स्थिति - 1 →
sum = 20 + 21 + 20 + 15 + 18 + 9 + 1 + 12 + 19 = 135 Score = 405
"बिंदु" की स्थिति - 1 →
sum = 16 + 15 + 9 + 14 + 20 = 74 Score = 296
इस समस्या को हल करने के लिए, सरणी के सभी तारों पर एक सरल दृष्टिकोण पुनरावृत्त होगा। प्रत्येक स्ट्रिंग के लिए, स्थिति को संग्रहीत करें और स्ट्रिंग के वर्णानुक्रमिक मानों का योग ज्ञात करें। एकाधिक स्थिति और योग और उत्पाद लौटाएं।
एल्गोरिदम
चरण 1 - स्ट्रिंग पर पुनरावृति करें और स्थिति को स्टोर करें और प्रत्येक स्ट्रिंग के लिए चरण 2 और 3 का पालन करें -
चरण 2 - स्ट्रिंग के अक्षरों के योग की गणना करें।
चरण 3 - स्थिति और योग के उत्पाद को प्रिंट करें।
उदाहरण
उपरोक्त समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include <iostream> using namespace std; int strScore(string str[], string s, int n, int index){ int score = 0; for (int j = 0; j < s.length(); j++) score += s[j] - 'a' + 1; score *= index; return score; } int main(){ string str[] = { "learn", "programming", "tutorials", "point" }; int n = sizeof(str) / sizeof(str[0]); string s = str[0]; for(int i = 0; i<n; i++){ s = str[i]; cout<<"The score of string ' "<<str[i]<<" ' is "<<strScore(str, s, n, i+1)<<endl; } return 0; }
आउटपुट
The score of string ' learn ' is 50 The score of string ' programming ' is 262 The score of string ' tutorials ' is 405 The score of string ' point ' is 296