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

最初の配列の最大値とCの2番目の最小値の積


それぞれサイズn1とn2の2つの配列arr1[]とarr2[]が与えられた場合、最初の配列arr1[]の最大要素と2番目の配列の最小要素の積を見つける必要があります。配列arr2[]。

arr1 [] ={5、1、6、8、9}とarr2 [] ={2、9、8、5、3}に要素があるように、arr1の最大要素は9で、最小要素はarr2は2であるため、両方の積は9 * 2 =18です。同様に、与えられた問題を解決するためのプログラムを作成する必要があります。

入力

arr1[] = {6, 2, 5, 4, 1}
arr2[] = {3, 7, 5, 9, 6}

出力

18

説明

MAX(arr1) * MIN(arr2) → 6 * 3 = 18

入力

arr1[] = { 2, 3, 9, 11, 1 }
arr2[] = { 5, 4, 2, 6, 9 }

出力

22

説明

MAX(arr1) * MIN(arr2) → 11 * 2 = 22

問題を解決するために以下で使用するアプローチは次のとおりです

  • 入力として2つの配列arr1とarr2を使用します

  • 両方の配列を昇順で並べ替えます。

  • arr1の最後の要素(最大要素)とarr2の最初の要素(最小要素)を乗算します。

  • 製品を返品してください。

アルゴリズム

Start
In function int sortarr(int arr[], int n)
   Step 1→ Declare and initialize temp
   Step 2→ For i = 0 and i < n-1 and ++i
      For j = i+1 and j<n and j++
         If arr[i]> arr[j] then,
         Set temp as arr[i]
         Set arr[i] as arr[j]
         Set arr[j] as temp
In Function int minMaxProduct(int arr1[], int arr2[], int n1, int n2)
   Step 1→ Call sortarr(arr1, n1)
   Step 2→ Call sortarr(arr2, n2)
   Step 3→ Return (arr1[n1 - 1] * arr2[0])
In Function int main()
   Step 1→ Declare and Initialize arr1[] = { 2, 3, 9, 11, 1 }
   Step 2→ Declare and Initialize arr2[] = { 5, 4, 2, 6, 9 }
   Step 3→ Declare and Initialize n1, n2 and initialize the size of both arrays
   Step 4→ Print minMaxProduct (arr1, arr2, n1, n2))
Stop

#include <stdio.h>
int sortarr(int arr[], int n){
   int temp;
   for (int i = 0; i < n-1; ++i){
      for(int j = i+1; j<n; j++){
         if(arr[i]> arr[j]){
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
         }
      }
   }
   return 0;
}
int minMaxProduct(int arr1[], int arr2[], int n1, int n2){
   // Sort the arrays to get
   // maximum and minimum
   sortarr(arr1, n1);
   sortarr(arr2, n2);
   // Return product of
   // maximum and minimum.
   return arr1[n1 - 1] * arr2[0];
}
int main(){
   int arr1[] = { 2, 3, 9, 11, 1 };
   int arr2[] = { 5, 4, 2, 6, 9 };
   int n1 = sizeof(arr1) / sizeof(arr1[0]);
   int n2 = sizeof(arr1) / sizeof(arr1[0]);
   printf("%d\n",minMaxProduct (arr1, arr2, n1, n2));
   return 0;
}

出力

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

22

  1. Cの配列内の要素の最初と最後のインデックス間の最大差

    サイズNの整数の配列が与えられます。配列はランダムな順序の整数で構成されます。タスクは、配列内の要素の最初と最後のインデックス間の最大の差を見つけることです。配列に2回現れる数を見つける必要があり、そのインデックス間の差は最大です。そのようなペアがさらにある場合は、インデックス間のそのような最大の差を格納します。 入力 Arr[] = { 2,1,3,1,3,2,5,5 }. 出力 −配列内の要素の最初と最後のインデックス間の最大差− 5 説明 −要素のペアとそれらのインデックス間の違いは次のとおりです- (2,2) Arr[0] and Arr[5] 5-0=5 max differ

  2. 配列の積のCプログラム

    n個の要素の配列arr[n]が与えられた場合、タスクはその配列のすべての要素の積を見つけることです。 7つの要素の配列arr[7]があるように、その製品は次のようになります 例 Input: arr[] = { 10, 20, 3, 4, 8 } Output: 19200 Explanation: 10 x 20 x 3 x 4 x 8 = 19200 Input: arr[] = { 1, 2, 3, 4, 3, 2, 1 } Output: 144 以下で使用されるアプローチは次のとおりです − 配列入力を取得します。 そのサイズを見つけます。 配列を反復処理し、その配列の