C++で文章内の各単語のASCII値の合計を求める方法
ASCII値とは
ASCII値とは、ASCII(American Standard Code for Information Interchange)という文字コード規格に基づいて、各文字に割り当てられた整数値のことです。たとえば、半角英字の「a」は97、「A」は65、「0」は48といった具合に、すべての文字が固有の数値に対応しています。
問題の概要
この記事では、次のような問題を扱います。「1つの文章が与えられたとき、文中の各単語ごとにASCII値の合計を計算し、さらに全体の合計も求めよ」
手順としては、まず文章を構成するすべての文字のASCII値を取得し、単語ごとにそれらを加算します。これにより各単語のASCII値の合計が得られます。この処理をすべての単語に対して行い、最後に各単語の合計をさらに足し合わせることで、文章全体のASCII値の総和を算出します。
入力例
文章は「i love tutorials point」
出力例
105 438 999 554 2096
上記の出力では、「i」の合計が105、「love」が438、「tutorials」が999、「point」が554となり、これらを合計した2096が最終的な答えです。
C++による実装例
以下は、C++でこの問題を解くサンプルコードです。文字列を先頭から走査し、空白文字が出現したタイミングでそれまでの単語の合計を配列に格納していくシンプルなアプローチを採用しています。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
long long int sumcalc (string str, vector < long long int >&arrsum) {
int l = str.length ();
int sum = 0;
long long int bigSum = 0L;
for (int i = 0; i < l; i++) {
if (str[i] == ' ') {
bigSum += sum;
arrsum.push_back (sum);
sum = 0;
}
else
sum += str[i];
}
arrsum.push_back (sum);
bigSum += sum;
return bigSum;
}
int main () {
string str = "i love tutorials point";
vector < long long int >arrsum;
cout<< "The string is "<<str<<endl;
long long int sum = sumcalc (str, arrsum);
cout << "Sum of ASCII values: ";
for (auto x:arrsum)
cout << x << " ";
cout << endl << "Total sum -> " << sum;
return 0;
}実行結果
The string is i love tutorials point Sum of ASCII values: 105 438 999 554 Total sum -> 2096
コードのポイント
- sumcalc関数: 文字列を受け取り、1文字ずつ走査します。通常の文字であればそのASCII値を
sumに加算し、空白に到達した時点でsumを結果格納用のベクターarrsumに追加してリセットします。 - bigSum変数: 全単語の合計を保持するための変数で、関数の戻り値として文章全体のASCII値の総和を返します。
- main関数: 対象の文字列を定義し、
sumcalcを呼び出した後、各単語の合計と全体の合計を出力します。
このように、文字列の走査と条件分岐を組み合わせるだけで、特別なライブラリを使わずに各単語のASCII値の合計を簡単に計算できます。文字コードの理解を深める練習問題としてもおすすめです。
-
Wordで表の列を合計する方法|数式フィールドの使い方と注意点を解説
Wordでは、Excelのような表計算ソフトを使わなくても、表の列の合計を簡単に計算できます。この記事では、Word 2003、2007、そして2010/2013/2016の各バージョンで列の合計を求める方法を、小数点以下の数値が入った列を例にして詳しく解説します。 Word 2007〜2016での合計方法 まずWordを開き、合計したい数値が入っている列の一番下にある空白セルにカーソルを置きます。 するとテーブルツールのタブが表示されるので、レイアウトタブをクリックします。 データグループの中にある数式ボタンをクリックします。 数式ダイアログボックスが開くと、数式ボックスには適切な計算
-
Pythonのmap関数と辞書を活用して各単語のASCII値の合計を計算する方法
この記事では、map関数と辞書(dict)を組み合わせて、文中の各単語ごとのASCII値の合計、および文全体の合計を計算する方法を解説します。例として、次のような文を考えてみましょう。hi people of the worldこの場合、各単語に対応するASCII値の合計は次のようになります。209 645 213 321 552そして、これらをすべて足した文全体の合計は 1940 となります。処理の流れ基本的な考え方は以下の通りです。map関数とord関数を使って、単語内の各文字のASCII値を取得します。sum関数でそれらの値を合計し、単語ごとのASCII値の合計を求めます。この処理を文内