C++で配列内の偶数・奇数要素の個数を数える方法
このチュートリアルでは、配列に含まれる偶数要素と奇数要素の個数を求めるC++プログラムについて解説します。
ここでは、あらかじめ整数の配列が与えられているものとします。私たちの課題は、その配列の中に偶数がいくつ、奇数がいくつ含まれているかを正確にカウントすることです。
考え方
基本的なアプローチは非常にシンプルです。以下の手順で処理を行います。
- 偶数・奇数それぞれのカウント用変数を0で初期化する
- for文を使って配列の全要素を先頭から順に走査する
- 各要素を2で割った余り(剰余演算
%)を判定し、余りが0なら偶数、そうでなければ奇数としてカウントする - 最後に両方の結果を出力する
サンプルコード
#include<iostream>
using namespace std;
void CountingEvenOdd(int arr[], int arr_size){
int even_count = 0;
int odd_count = 0;
// 配列の要素を順番に走査
for(int i = 0 ; i < arr_size ; i++) {
// 奇数かどうかを判定
if (arr[i]%2 != 0)
odd_count ++ ;
else
even_count ++ ;
}
cout << "Number of even elements = " << even_count
<< "\nNumber of odd elements = " << odd_count ;
}
int main(){
int arr[] = {2, 3, 4, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
CountingEvenOdd(arr, n);
}実行結果
Number of even elements = 3 Number of odd elements = 2
コードの解説
このプログラムでは、まず main 関数内で {2, 3, 4, 5, 6} という整数配列を定義しています。sizeof(arr) / sizeof(arr[0]) という式は、配列全体のバイトサイズを1要素分のサイズで割ることで、配列の要素数を自動的に求める定番のテクニックです。
次に、CountingEvenOdd 関数に配列とその要素数を渡します。関数内部では、各要素に対して arr[i] % 2 != 0 という条件で判定を行っています。2で割った余りが0でなければ奇数、0であれば偶数として、それぞれ対応するカウンターをインクリメントしていきます。
今回の例では、偶数は「2, 4, 6」の3つ、奇数は「3, 5」の2つであるため、上記のような実行結果が出力されます。
なお、負の数が含まれる配列でも、C++の剰余演算子の性質上 -3 % 2 は -1 となるため、!= 0 の判定であれば正しく奇数としてカウントできる点にも注目してください。
-
C++で木構造のノード数が奇数・偶数となるレベルをすべて出力する方法
この記事では、木(ツリー)構造が与えられたときに、各レベルに含まれるノードの数を調べ、その数が奇数であるレベルと偶数であるレベルをそれぞれ出力する方法を、C++のサンプルコード付きで解説します。 問題の概要 まず、具体的な例を使って概念を確認しましょう。次のような木構造を考えます。 出力: ノード数が奇数のレベル:1, 3, 4 ノード数が偶数のレベル:2 解説: 第1レベルにはノードが1個(奇数)、第2レベルには2個(偶数)、第3レベルには3個(奇数)、第4レベルには1個(奇数)存在します。そのため、奇数となるのは「1, 3, 4」のレベル、偶数となるのは「2」のレベルです。 解き方
-
C++で配列の偶数・奇数インデックス要素の絶対差を求める方法
この記事では、配列内の偶数インデックスと奇数インデックスにある要素の絶対差を求める方法を解説します。絶対差とは、2つの値の差が負になった場合にも絶対値を取ることを指します。 例として、配列 {1, 2, 3, 4, 5, 6, 7, 8, 9} を考えてみましょう。インデックスは0から始まるため、各要素は次のように分類されます。 偶数インデックス(0, 2, 4, 6, 8)の要素:1, 3, 5, 7, 9奇数インデックス(1, 3, 5, 7)の要素:2, 4, 6, 8 計算の手順 まず初期値0から出発し、該当するインデックスの要素を順番に見ながら、直前の累積値との差の絶対値を求めていき