配列の全要素を乗算するC++プログラムの解説
整数型の要素を持つ配列が与えられたとき、配列内のすべての要素を掛け合わせ、その積を表示することを考えます。本記事では、この問題をC++(C言語スタイルのコード)で解く方法を、アプローチ、アルゴリズム、サンプルコード、実行結果まで順を追って解説します。
例
入力: arr[]={1,2,3,4,5,6,7}
出力: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040
入力: arr[]={3, 4, 6, 2, 7, 8, 4}
出力: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256

解き方のアプローチ
この問題は、累積用の一時変数を用意し、配列の要素を先頭から順番に掛けていくことで解決できます。具体的な手順は以下のとおりです。
- 最終結果を格納する一時変数(temp)を 1 で初期化します。1は乗算の単位元であるため、結果に影響を与えません。
- 0 から n-1(n は配列のサイズ)までループを実行します。
- 各ループ内で、temp の値に arr[i] を掛け合わせていきます。
- ループ終了後の temp の値が配列全要素の積となるため、その値を表示します。
アルゴリズム
開始
ステップ1 → 配列要素を乗算する関数を宣言する
int multiply(int arr[], int len)
int i, temp = 1 を設定
i = 0 から i < len まで i++ のループ
temp = temp * arr[i] を実行
ループ終了
temp を返す
ステップ2 → main() 内で
int arr[] = {1,2,3,4,5,6,7} を宣言
int len = sizeof(arr)/sizeof(arr[0]) を設定
int value = multiply(arr, len) を設定
value を表示
終了
サンプルコード
以下は、入力値を乗算して目的の出力を生成するコード例です。
#include<stdio.h>
// 乗算用の関数
int multiply(int arr[], int len) {
int i, temp = 1;
for(i = 0; i < len; i++) {
temp = temp * arr[i];
}
return temp;
}
int main() {
int arr[] = {1,2,3,4,5,6,7};
int len = sizeof(arr) / sizeof(arr[0]);
int value = multiply(arr, len);
printf("value of array elements after multiplication : %d", value);
return 0;
}
コードのポイント
- multiply関数:配列とその長さを受け取り、temp を1で初期化した後、forループで各要素を順に掛け合わせ、最後に結果を返します。
- sizeof(arr)/sizeof(arr[0]):配列全体のバイト数を1要素分のバイト数で割ることで、配列の要素数を求める定番の書き方です。
- 計算量:配列を一度だけ走査するため、時間計算量は O(n) です。
出力
上記のコードを実行すると、以下の出力が得られます。
value of array elements after multiplication : 5040
なお、要素数が多い場合や要素の値が大きい場合、int型の範囲(通常 -2,147,483,648 ~ 2,147,483,647)を超えてオーバーフローが発生する可能性があります。そのような場合は、long long 型などより大きなデータ型の使用を検討してください。
-
C言語で配列の全要素の積を求めるプログラム
n個の要素を含む配列 arr[n] が与えられたとき、その配列内のすべての要素の積を求めることが課題となります。例えば、7つの要素からなる配列 arr[7] の場合、積は以下のように計算されます。例入力: arr[] = { 10, 20, 3, 4, 8 } 出力: 19200 説明: 10 × 20 × 3 × 4 × 8 = 19200 入力: arr[] = { 1, 2, 3, 4, 3, 2, 1 } 出力: 144解き方のアプローチ配列を入力として受け取る。配列のサイズを求める。配列を反復処理しながら、各要素を掛け合わせる。結果を表示する。アルゴリズム開始 関数 int pro
-
C++入門:ポインタを使って配列の要素にアクセスする方法
ポインタとは、変数のメモリ上の位置(アドレス)を格納するための特殊な変数です。言い換えれば、ポインタは特定のメモリ位置を参照しており、そのメモリ位置に格納された値を取得することを「デリファレンス(間接参照)」と呼びます。まずは、ポインタを使用して配列の単一の要素にアクセスする基本的なプログラムを見てみましょう。例1:配列の1つの要素にアクセスする#include <iostream> using namespace std; int main() { int arr[5] = {5, 2, 9, 4, 1};