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

特定の値がC++にある間隔の数を数えます


間隔と数値「値」を含む2D配列arr[][]が与えられます。目標は、値が間にあるarrに存在する間隔の数を見つけることです。たとえば、間隔は[[1,5]、[3,7]]で、value =4の場合、これらの間隔の両方にあり、カウントは2になります。

入力

arr[4][2] = { { 1, 20 }, { 12, 25 }, { 32, 40 }, { 15, 18 } } value=16

出力

Count of number of intervals in which a given value lies are: 3

説明

The value 16 lies between 1−20, 12−25 and 15−18

入力

arr[4][2] = {{ 1, 20 }, { 20,30 }, { 30, 40 }, { 40, 50 }} value=60

出力

Count of number of intervals in which a given value lies are: 0

説明

The value 60 is larger than all maximum ranges of intervals present in
arr[][].

以下のプログラムで使用されるアプローチは次のとおりです

このアプローチでは、arrに存在する範囲のすべての数に対して周波数配列arr_2[]を生成します。したがって、各範囲のarr[i][0]およびarr[i][1]について、頻度はarr_2 [arr[i][0または1]]で増分されます。最後に、周波数配列をarr_2 [i] =arr_2 [i] + arr_2 [i-1]で更新します。これは、i-1未満の数値もiより小さいため、周波数が追加されるためです。このようにして、値が存在するすべての範囲としてarr_2[value]を取得します。

  • 範囲を含む整数配列arr[][]を取ります。

  • 入力として整数値を取ります。

  • 関数intervals_values(int arr [] [2]、int size、int value)は、arrとvalueを受け取り、指定された値が存在する間隔の数のカウントを返します。

  • 周波数配列arr_2[]を取得します。

  • INT_MAXおよびINT_MINとして最低および最高を取ります。

  • forループを使用してarr[][]をi=0からi

  • 範囲の左側として温度を取得し、その頻度をarr_2 [temp]

    でインクリメントします。
  • 範囲の右側としてtemp_2を取り、その頻度をarr_2 [temp_2 + 1]

    でインクリメントします。
  • temp highestがtemp_2として最高に設定されている場合。

  • 周波数配列をトラバースし、arr_2 [i] =arr_2 [i] + arr_2 [i+1]を更新します。

  • 最後に、結果としてarr_2[value]を返します。

#include<bits/stdc++.h>
using namespace std;
#define max 1000
int intervals_values(int arr[][2], int size, int value){
   int arr_2[max];
   int low = INT_MAX;
   int highest = INT_MIN;
   for(int i = 0; i < size; i++){
      int temp = arr[i][0];
      arr_2[temp] = arr_2[temp] + 1;
      int temp_2 = arr[i][1];
      arr_2[temp_2 + 1] = arr_2[temp_2 + 1] − 1;
      if(temp < low){
         low = temp;
      }
      if(temp_2 > highest){
         highest = temp_2;
      }
   }
   for (int i = low; i <= highest; i++){
      arr_2[i] = arr_2[i] + arr_2[i − 1];
   }
   return arr_2[value];
}
int main(){
   int arr[4][2] = { { 3, 20 }, { 2, 13 }, { 25, 30 }, { 15, 40 } };
   int size = sizeof(arr) / sizeof(arr[0]);
   int value = 28;
   cout<<"Count the number of intervals in which a given value lies are:
   "<<intervals_values(arr, size, value);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count the number of intervals in which a given value lies are: 18830628

  1. C++で指定されたサイズの長方形内で可能な菱形の数を数えます

    高さX幅の寸法の長方形が与えられます。長方形は、点(0,0)を左下隅に持つ2D座標系で表されます。したがって、目標は、これらすべての条件が満たされるように、この長方形内で可能な菱形の数を数えることです- ひし形の面積は0を超えています。 ひし形の対角線はx軸とy軸に平行です。 ひし形には、すべてのコーナーの整数座標があります。 例を挙げて理解しましょう 入力 −長さ=3幅=3 出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。4 説明 −下の図には、height =width=3の長方形があります。また、面積が0を超え、対角線が両方の軸に平行(

  2. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;