C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でN+1日目の降雨確率を計算する方法

0と1が格納された配列が与えられます。ここで、0は雨が降らなかった日、1は雨の日を表します。この記事では、過去のデータをもとにN+1日目(翌日)に雨が降る確率をC++で計算する方法を解説します。

計算式

N+1日目に雨が降る確率は、次のシンプルな式で求めることができます。

確率 = 配列内の雨の日の総数 ÷ 配列内の全日数

入力例と出力例

入力

arr[] = {1, 0, 0, 0, 1}

出力

n+1日目の降雨確率 : 0.4

解説

雨の日と雨でない日の合計:5日
1で表される雨の日の数:2日
N+1日目の降雨確率:2 / 5 = 0.4

入力

arr[] = {0, 0, 1, 0}

出力

n+1日目の降雨確率 : 0.25

解説

雨の日と雨でない日の合計:4日
1で表される雨の日の数:1日
N+1日目の降雨確率:1 / 4 = 0.25

プログラムのアプローチ

  • 配列の要素を入力として受け取る

  • 1は雨の日を表すものとして扱う

  • 0は雨でない日を表すものとして扱う

  • 上記の計算式を用いて確率を算出する

  • 結果を出力する

アルゴリズム

Start
Step 1→ n+1日目の降雨確率を求める関数を宣言
    float probab_rain(int arr[], int size)
        float型の count = 0 と a を宣言
        ループ For int i = 0 and i < size and i++
            IF (arr[i] == 1)
                count++ を設定
            End
        End
        a = count / size を設定
        return a
Step 2→ main() 内で
    int arr[] = {1, 0, 0, 0, 1} を宣言
    int size = sizeof(arr) / sizeof(arr[0]) を宣言
    probab_rain(arr, size) を呼び出す
Stop

実装例

#include <bits/stdc++.h>
using namespace std;
// n+1日目に雨が降る確率を求める関数
float probab_rain(int arr[], int size){
    float count = 0, a;
    for (int i = 0; i < size; i++){
        if (arr[i] == 1)
            count++;
        }
        a = count / size;
        return a;
}
int main(){
    int arr[] = {1, 0, 0, 0, 1 };
    int size = sizeof(arr) / sizeof(arr[0]);
    cout<<"n+1日目の降雨確率 : "<<probab_rain(arr, size);
    return 0;
}

出力結果

上記のコードを実行すると、以下の出力が得られます。

n+1日目の降雨確率 : 0.4

コードのポイント

このプログラムでは、sizeof(arr) / sizeof(arr[0]) を使うことで配列の要素数を自動的に取得しています。また、確率を小数で正しく表現するために、カウント変数を float 型で宣言している点が重要です。もし countint 型のまま整数除算を行うと、結果が常に0になってしまうため注意が必要です。

  1. C++で解くチェス盤上のナイトが盤内に残る確率の求め方

    問題概要 N×Nのチェス盤があるとします。ナイトはr行c列目のマスからスタートし、ちょうどK回の移動を試みます。行と列は0始まりのインデックスで表されるため、左上のマスは(0, 0)、右下のマスは(N-1, N-1)となります。 ナイトは1つのマスから8種類の異なるマスへ移動することができます。その移動パターンは下図の通りです。 ナイトは移動のたびに、8つの可能な移動の中からランダムに1つを選択します。そして、ちょうどK回の移動を完了するか、チェス盤の外に出てしまうまで移動を続けます。この問題では、ナイトが移動を終えた時点で盤上に残っている確率を求めます。 例えば、入力が「3, 2, 0,

  2. C++で作る「ハッピー・ウィメンズデイ」出力プログラム

    世界中でお祝いされる「女性の日」。この記事では、その祝福メッセージをC++のコンソールプログラムとして出力する方法をご紹介します。記号「#」で描かれた円の中央に「7 Oct」と「Happy Womens Day」の文字列を表示し、さらにその下にはアスタリスク(*)でリボンのような模様を描く構成になっています。 サンプルコード #include <iostream> using namespace std; int main(){ // デザインのサイズを初期化 int n = 5; // 円(デザインの上半分)を描画するループ // 外側のループで高