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