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

C ++では辺の比率が[a、b]の範囲になるように長方形の数を数えます。


長方形の辺と範囲変数が最初と最後に与えられます。目標は、辺の長さ/幅の比率が[最初、最後]の範囲にある長方形の数を見つけることです。

入力

rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190}, {180, 200}, {300, 200}} and first = 1.0, last = 1.6

出力

Count of number of rectangles such that ratio of sides lies in the range [a,b] are: 4

説明

The sides that have ratio in the range [ 1.0,1.6 ] are :
{200,210}, {300,190}, {180,200}, {300,200}
です。

入力

rec[] = { { 10,20 }, { 30, 10 }, { 100, 500}, {900, 300}, {450, 90}} and
first = 3.0, last = 4.0

出力

Count of number of rectangles such that ratio of sides lies in the range [a,b]
are: 2

説明

The sides that have ratio in the range [ 3.0,4.0 ] are :
{30,10}, {900,300}

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

このアプローチでは、pair の配列の形でサイドを取ります。ペアごとに、大きい値/小さい値の結果が[first、last]の範囲にあるかどうかを確認します。 trueの場合、そのようなペアのカウントをインクリメントします。

  • タイプpairの配列rec[]を取ります。

  • 範囲を定義するために、最初と最後の2つの変数を取ります。

  • 関数ratio_sides(pair rec []、int total、double first、double last)は、長方形の辺を取り、辺の比率が[a、b]の範囲になるように長方形の数を返します。

  • 初期カウントを0とします。

  • i=0からi

  • ペアrec[i]の大きい方の値をmaxi=max(rec [i] .first、rec [i] .second)として抽出します。

  • ペアrec[i]の小さい値をmini=min(rec [i] .first、rec [i] .second)として抽出します。

  • average =maxi/miniを計算します。

  • 平均の値が[first、last]の範囲にある場合は、カウントをインクリメントします。

  • 結果としてのforループリターンカウントの最後に..

#include <bits/stdc++.h>
using namespace std;
int ratio_sides(pair<int, int> rec[], int total, double first, double last){
   int count = 0;
   for (int i = 0; i < total; i++){
      double maxi = max(rec[i].first, rec[i].second);
      double mini = min(rec[i].first, rec[i].second);
      double average = maxi/mini;
      if (average >= first){
         if(average <= last){
            count++;
         }
      }
   }
   return count;
}
int main(){
   pair<int, int> rec[] = { { 200, 210 }, { 100, 50 }, { 300, 190}, {180, 200}, {300, 200}};
   int total = 5;
   double first = 1.0, last = 1.6;
   cout<<"Count of number of rectangles such that ratio of sides lies in the range [a,b] are: "<<ratio_sides(rec, total, first, last);
   return 0;
}

出力

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

Count the number of rectangles such that ratio of sides lies in the range [a,b] are: 4

  1. Xのような最小数Xを見つけてください! C++では少なくともY個の末尾のゼロが含まれています

    数Yを取る必要があります、Xのような最小の数Xを見つけます!少なくともY個のトレーニングゼロが含まれています。たとえば、Y =2の場合、Xの値は10です。Xとして! =3228800。Y個のゼロがあります。 二分探索を使用してこれを解決できます。 Nの後続ゼロの数! N!の因数5の数で与えられます。 Xは、範囲[0、5 * Y]で二分探索を使用して見つけることができます。 例 #include<iostream> using namespace std; int factorCount(int n, int X) {    if (X < n) &nb

  2. C++で数値を除算する数値の桁数を検索します

    番号が与えられていると仮定します。数を均等に分割する数の桁数を数える必要があります。数値が1012で、結果が3であるとします。1012を均等に分割する3桁の1、1、および2があります。 これを解決するために、モジュラス演算を使用して数値の各桁を見つけ、数値がその桁で割り切れるかどうかを確認します。割り切れる場合は、カウンターを増やします。数字が0の場合は、その数字を無視します。 例 #include<iostream> using namespace std;    int countDivDigit(int num) {    int c