Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ที่หารลงตัวในอาร์เรย์ใน C++


เราได้รับอาร์เรย์ของขนาดใดๆ ที่มีองค์ประกอบจำนวนเต็ม และภารกิจคือการคำนวณจำนวนคู่ในอาร์เรย์เพื่อให้องค์ประกอบหนึ่งของคู่แบ่งองค์ประกอบอื่นของคู่

อาร์เรย์ประเภทโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเล็กชันแบบต่อเนื่องที่มีขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้เพื่อจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน

ตัวอย่าง

Input − int arr[] = {1, 2, 3, 6}
Output − count is 4

คำอธิบาย − (1,2), (1,3), (1,6) และ (3,6) เป็นคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่เป็น 1 สามารถหารจำนวนใด ๆ และ 3 หาร 6 ด้วย ดังนั้น นับเป็น 4

Input − int arr[] = {2, 5, 10}
Output − count is 2

คำอธิบาย − (2, 10) และ (5,10) คือคู่ที่องค์ประกอบหนึ่งของคู่หารอีกคู่หนึ่ง เนื่องจาก 2 สามารถหาร 10 และ 5 สามารถหาร 10 ได้เช่นกัน ดังนั้นการนับคือ 2

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • สร้างอาร์เรย์ สมมุติว่า arr[]

  • คำนวณความยาวของอาร์เรย์โดยใช้ฟังก์ชัน length() ที่จะคืนค่าจำนวนเต็มตามองค์ประกอบในอาร์เรย์

  • ใช้ตัวแปรชั่วคราวที่จะเก็บจำนวนองค์ประกอบที่มีอยู่ในอาร์เรย์เท่านั้น

  • เริ่มวนรอบด้วย i ถึง 0 และฉันน้อยกว่าขนาดของอาร์เรย์

  • ภายในลูปเริ่มลูปใหม่ด้วย j ถึง i+1 จนถึง j น้อยกว่าขนาด

  • ภายในลูปตรวจสอบว่า arr[i] % arr[j] =0 หรือ arr[j] % arr[i] =0 แล้วเพิ่มการนับ

  • คืนจำนวน

  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include <iostream>
using namespace std;
int divisibles(int a[], int size){
   int result = 0;
   // Iterating through all pairs
   for (int i=0; i<size; i++){
      for (int j=i+1; j<size; j++){
         if (a[i] % a[j] == 0 || a[j] % a[i] == 0){
            result++;
         }
      }
   }
   return result;
}
int main(){
   int a[] = {1, 4, 7, 8, 9};
   int size = sizeof(a) / sizeof(a[0]);
   cout <<"count is " <<divisibles(a, size);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

count is 5