เราได้รับอาร์เรย์ที่มีองค์ประกอบจำนวนเต็มและตัวเลขสองตัวเริ่มต้นและสิ้นสุด และภารกิจคือการคำนวณจำนวนองค์ประกอบที่มีอยู่ระหว่างจุดเริ่มต้นและจุดสิ้นสุดในอาร์เรย์
อาร์เรย์ประเภทโครงสร้างข้อมูลที่สามารถจัดเก็บคอลเล็กชันแบบต่อเนื่องที่มีขนาดคงที่ขององค์ประกอบประเภทเดียวกัน อาร์เรย์ใช้เพื่อจัดเก็บชุดข้อมูล แต่มักจะมีประโยชน์มากกว่าที่จะคิดว่าอาร์เรย์เป็นชุดของตัวแปรประเภทเดียวกัน หากองค์ประกอบเริ่มต้นเกิดขึ้นหลายครั้ง เราจะพิจารณาการเกิดขึ้นครั้งแรกขององค์ประกอบเริ่มต้น และหากองค์ประกอบสิ้นสุดเกิดขึ้นหลายครั้ง เราจะพิจารณาการเกิดขึ้นสิ้นสุดขององค์ประกอบสิ้นสุด
ตัวอย่าง
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