c++ - 从数组中提取对数
问题描述
晚安,伙计们。
我目前在从数组中提取对数时遇到困难。我有以下代码:
#include <iostream>
using namespace std;
int *paire(int *d, int length) {
int counter = 0;
int position = 0;
for (int i=0; i<length; i++) {
if (d[i] % 2 ==0)
counter++;
}
int *k = new int[counter];
for (int i=0; i<length; i++) {
if (d[i] % 2 ==0) {
k[position] = d[i];
position++;
}
}
return k;
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int *array1 = paire(b,8);
for (int i=0; i<5; i++) { // how can I point here to the counter in paire() ?
cout<<array1[i];
}
delete[] array1;
return 0;
}
所以我认为我在 function 中初始化新数组是正确的paire
,但是我在遍历数组时遇到了困难。
PS我是大学一年级,所以如果你能在答案中保持同样的简单性,我将非常感激。提前致谢!
解决方案
看来您需要返回 2 个单独的值:数组 b 中的偶数个数,以及专门存储这些偶数的新分配内存的地址。
由于您不能返回多个变量,因此对代码进行最少修改的一种解决方案如下。
int *paire(int *d, int length, int& counter) {
counter = 0;
// rest of your function remains unchanged
// ...
}
int main() {
int b[8] = {1,2,3,4,5,6,7,8};
int evenNumbers;
int *array1 = paire(b,8, evenNumbers);
for (int i=0; i<evenNumbers; i++) {
cout<<array1[i];
}
delete [] array1;
return 0;
}
或者,您可以返回值counter
并将对int*
变量的引用作为参数发送给paire
函数。或者,您可以声明paire
具有返回类型void
并使用引用来传回这两个值。
推荐阅读
- reactjs - 使用带有样式组件的 react-stripe-js
- python - 将字符串拆分为内部列表而不影响关系
- redisson - redisson 重试是否会再次调用负载均衡器?
- javascript - 将标头发送到客户端后无法设置标头 node.js 中的错误
- python - Raspberry pi 4 通过用于机器人汽车的 USB 串行到 arduino
- c - 如何使我的程序根据用户输入提高图书的价格(百分比)?
- javascript - 远程服务器上的 PM2 设置
- angular - 识别 Angular 中发生事件的 p-checkbox
- git - 将 repo git svn clone 与其他 git repo 合并
- python-3.x - 用python检查字符串是否在列表中