Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문자열 문자의 알파벳 값 합계


이 문제에서는 문자열 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