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

นับจำนวนองค์ประกอบระหว่างสององค์ประกอบที่กำหนดในอาร์เรย์ใน C++


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

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

ตัวอย่าง

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