c++ - 在 C++ 中从数组中复制奇数元素

标签 c++ arrays tdd

我有以下代码:

int copyOddOnly(int *dest, int *src, int n) {

  int copyList = 0;

  for(int i = 0; i < n; i++) {
    if(src[i]%2!=0) {
        dest[i]=src[i];
        copyList = copyList + 1;
            }
        }

    return copyList; 
}

意思是从数组src中取出所有奇数元素,复制到数组dest中。 n 是要从 src 复制到 dest 的元素数。它通过了除以下两项之外的大部分测试:

 int a[10] = {0};

  ASSERT_EQUALS(3,copyOddOnly(a,descending,5));
  ASSERT_EQUALS( "{5,4,3,2,1}",arrayToString(descending,5));
  ASSERT_EQUALS( "{5,3,1}",arrayToString(a,3));


  ASSERT_EQUALS(5,copyOddOnly(a,mix2,10));
  ASSERT_EQUALS( "{-42,12,-9,56,123,32767,48,12,-43,-43}",arrayToString(mix2,10));
  ASSERT_EQUALS( "{-9,123,32767,-43,-43}",arrayToString(a,5));

它不是从 arrayToString(a,3) 复制 {5,3,1},而是复制 {5,0,3}。它不是从 arrayToString(a,5) 复制 {-9,123,32767,-43,-43},而是复制 {5,0,-9,0,123}。

我在编写它时的第一直觉就是让它返回 n,但出于某种原因,这导致它无法通过更多测试。我有一种感觉,我没有得到一些基本的东西,我无法弄清楚是什么。任何帮助,将不胜感激。

最佳答案

代替

dest[i]=src[i];

你可能想拥有

dest[copyList]=src[i];

关于c++ - 在 C++ 中从数组中复制奇数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28893812/

相关文章:

c++ - iso 12.1 p5 中的第 4 个要点对我来说没有意义

PHP 在保留键的同时遍历多维数组

.net - 我如何指定主题默认字体的粗体版本?

c++ - 是否可以在 O(1) 时间内为 C++ vector 分配新值?

c# - 正则表达式 + 在模式中包含一个空格

php - 如何从 MySQL 查询(多级数组)中获取变量?

c - C 的测试框架

c# - 有没有办法保护遵循 MethodName_Condition_ExpectedBehaviour 模式的单元测试名称免受重构?

cocoa - OSX 应用程序的 TDD

c++ - Windows 如何识别非 Unicode 应用程序?