Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ผลคูณของค่าสูงสุดในอาร์เรย์แรกและค่าต่ำสุดในอาร์เรย์ที่สองในภาษา C

ได้รับสองอาร์เรย์ arr1[] และ arr2[] ขนาด n1 และ n2 ตามลำดับ งานคือหาผลคูณขององค์ประกอบสูงสุดของอาร์เรย์แรก arr1[] และองค์ประกอบต่ำสุดของอาร์เรย์ที่สอง 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

วิธีการแก้ปัญหา

  • รับสองอาร์เรย์ arr1 และ arr2 เป็นอินพุต
  • เรียงทั้งสองอาร์เรย์จากน้อยไปมาก
  • คูณองค์ประกอบสุดท้ายของ arr1 (ค่าสูงสุด) และองค์ประกอบแรกของ arr2 (ค่าต่ำสุด)
  • คืนค่าผลคูณ

อัลกอริทึม

Start
In function int sortarr(int arr[], int n)
    Step 1: ประกาศและกำหนด temp
    Step 2: For i = 0 และ i < n-1 และ ++i
        For j = i+1 และ j < n และ j++
            ถ้า arr[i] > arr[j] แล้ว
                กำหนด temp = arr[i]
                กำหนด arr[i] = arr[j]
                กำหนด arr[j] = temp
In Function int minMaxProduct(int arr1[], int arr2[], int n1, int n2)
    Step 1: เรียก sortarr(arr1, n1)
    Step 2: เรียก sortarr(arr2, n2)
    Step 3: Return (arr1[n1 - 1] * arr2[0])
In Function int main()
    Step 1: ประกาศและกำหนด arr1[] = { 2, 3, 9, 11, 1 }
    Step 2: ประกาศและกำหนด arr2[] = { 5, 4, 2, 6, 9 }
    Step 3: ประกาศและกำหนด n1, n2 และกำหนดขนาดของทั้งสองอาร์เรย์
    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) {
    // เรียงอาร์เรย์เพื่อได้ค่าสูงสุดและต่ำสุด
    sortarr(arr1, n1);
    sortarr(arr2, n2);
    // คืนค่าผลคูณของค่าสูงสุดและต่ำสุด
    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(arr2) / sizeof(arr2[0]);
    printf("%d\n", minMaxProduct(arr1, arr2, n1, n2));
    return 0;
}

ผลลัพธ์

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —

22