在 C++ 中计算数组中两个给定元素之间的元素个数


给定一个包含整数元素的数组和两个数字 start 和 end,任务是计算数组中 start 和 end 之间存在的元素个数。

数组是一种数据结构,可以存储固定大小的相同类型元素的顺序集合。数组用于存储数据集合,但通常将数组视为相同类型的变量集合更有用。如果起始元素出现多次,我们将考虑起始元素的第一次出现;如果结束元素出现多次,我们将考虑结束元素的最后一次出现。

例如

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,如果是,则中断循环

  • 检查 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

更新于: 2020年5月15日

1K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.