Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng các giá trị theo thứ tự bảng chữ cái của các ký tự của một chuỗi trong C ++


Trong bài toán này, chúng ta được cung cấp một mảng chuỗi str []. Nhiệm vụ của chúng ta là tìm điểm của tất cả các chuỗi trong mảng. Điểm số được định nghĩa là tích số của vị trí của chuỗi với tổng các giá trị theo thứ tự bảng chữ cái của các ký tự trong chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

str[] = {“Learn”, “programming”, “tutorials”, “point” }

Giải thích

Vị trí của “Tìm hiểu” - 1 →

sum = 12 + 5 + 1 + 18 + 14 = 50. Score = 50

Vị trí của “lập trình” - 2 →

sum = 16 + 18 + 15 + 7 + 18 + 1 + 13 + 13 + 9 + 14 + 7 = 131
Score = 262

Vị trí của "hướng dẫn" - 1 →

sum = 20 + 21 + 20 + 15 + 18 + 9 + 1 + 12 +
19 = 135
Score = 405

Vị trí của “điểm” - 1 →

sum = 16 + 15 + 9 + 14 + 20 = 74
Score = 296

Để giải quyết vấn đề này, một cách tiếp cận đơn giản sẽ lặp lại trên tất cả các chuỗi của mảng. Đối với mỗi chuỗi, lưu trữ vị trí và tìm tổng các giá trị theo thứ tự bảng chữ cái của chuỗi. Nhiều vị trí và tổng hợp và trả lại sản phẩm.

Thuật toán

Bước 1 - Lặp lại chuỗi và lưu trữ vị trí và đối với mỗi chuỗi, hãy thực hiện theo bước 2 và 3 -

Bước 2 - Tính tổng các bảng chữ cái của chuỗi.

Bước 3 - in tích của vị trí và tổng.

Ví dụ

Chương trình minh họa hoạt động của giải pháp trên,

#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;
}

Đầu ra

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