เราได้รับอาร์เรย์ที่มีองค์ประกอบจำนวนเต็มและตัวเลขสองตัวเริ่มต้นและสิ้นสุด และภารกิจคือการคำนวณจำนวนองค์ประกอบที่มีอยู่ระหว่างจุดเริ่มต้นและจุดสิ้นสุดในอาร์เรย์
อาร์เรย์ประเภทโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเล็กชันแบบต่อเนื่องที่มีขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้เพื่อจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน หากองค์ประกอบเริ่มต้นเกิดขึ้นหลายครั้ง เราจะพิจารณาการเกิดขึ้นครั้งแรกขององค์ประกอบเริ่มต้น และหากองค์ประกอบสิ้นสุดเกิดขึ้นหลายครั้ง เราจะพิจารณาการเกิดขึ้นสิ้นสุดขององค์ประกอบสิ้นสุด
ตัวอย่าง
Input − int arr[] = {1, 2, 3, 4, 5, 6, 7} Start = 1 and End = 7 Output − count is 5
คำอธิบาย − ในอาร์เรย์ที่กำหนด มี 7 องค์ประกอบและช่วงคือ 1-7 ดังนั้น ในช่วงนี้มีองค์ประกอบทั้งหมด 5 รายการ
Input − int arr[] = {1, 2, 3, 4, 5, 6, 7} Start = 7 and End = 9 Output − count is 0
คำอธิบาย − ในอาร์เรย์ที่กำหนด มี 7 องค์ประกอบและช่วงคือ 7-9 ดังนั้นในช่วงนี้จึงไม่มีองค์ประกอบใด ๆ ดังนั้นการนับจึงเป็น 0
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ใส่อาร์เรย์ สมมติว่า int arr[]
-
คำนวณความยาวของอาร์เรย์ทั้งสองโดยใช้ฟังก์ชัน length() ที่จะคืนค่าจำนวนเต็มตามองค์ประกอบในอาร์เรย์
-
เริ่มการวนซ้ำจาก i ถึง 0 จนถึง i น้อยกว่าขนาดของอาร์เรย์
-
ภายในลูป ตรวจสอบว่า arr[i] =start แล้ว break
-
ตรวจสอบว่า i>size-1 แล้วส่งคืน
-
เริ่มการวนซ้ำอีกครั้งด้วย j ถึง size-1 และ j>=i+1 และ j--
-
ตรวจสอบว่า arr[j]=end แล้วหักหรือไม่
-
ตรวจสอบว่า j=1 แล้วคืนค่า 0
-
กลับ j-i-1
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <iostream> using namespace std; // For counting the numbers between the two elements int countelements(int ar[], int n, int start, int end){ // Find start int i = 0; for (i = 0; i < n; i++){ if (ar[i] == start){ break; } } // If start is not present or present at the last if (i >= n-1){ return 0; } // Find end int j; for (j = n-1; j >= i+1; j--){ if (ar[j] == end){ break; } } // If end is not present if (j == i){ return 0; } // number of elements between the two elements return (j - i - 1); } // Main Function int main(){ int ar[] = { 1, 6, 2, 5, 9, 8, 3, 7, 4 }; int n = sizeof(ar) / sizeof(ar[0]); int start = 5, end = 4; cout <<"count is " <<countelements(ar, n, start, end); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
count is 4