【问题标题】:C++ how to print the first 10 and last 10 elements of an array?C++如何打印数组的前10个和后10个元素?
【发布时间】:2020-09-04 03:26:35
【问题描述】:

我正在尝试打印数组的前 10 个和后 10 个元素。我在下面的尝试在无限循环中返回以下内容

Word: Count 0
void printarrayString(std::string arr[], int size)
{
    int i;
    int j;

    std::cout << "***first 10 elements***" << std::endl;
    for (i = 10; i < size; i++)//print first 10 elements 
    std::cout << "Word: " << wordArr[i] << "  " << "Occurs: " << countArr[i] << std::endl;
    std::cout << std::endl;
    
    std::cout << "***last 10 elements***" << std::endl;
    for(j = 10; j < size-10; j-- ) //print last 10 elements
    std::cout << "Word: " << wordArr[i] << "  " << "Occurs: " << countArr[i] << std::endl;
    std::cout << std::endl;
}

如何修复循环,以便循环 1 打印 wordArr 和 countArr 的前 10 个元素,而循环 2 打印最后 10 个元素?谢谢你

【问题讨论】:

  • 我建议你在那个函数上做一些rubber duck debugging。例如,您在循环中打印的第一个元素的索引是什么(两个循环)?
  • 如果您没有意识到,您使用 j 作为迭代器, i 作为反向循环中的索引器。是不是打错字了?
  • 请注意arr 不是一个数组。它是指向std::string 的指针。

标签: c++ loops printing


【解决方案1】:

你弄错了索引。在 C++(甚至在大多数编程语言中)中,基本元素或第一个元素位于索引 0 处(有没有想过为什么?)。因此,要打印前 n 个元素,您需要从 i = 0 迭代到 i = n - 1,也就是 for(int i = 0; i &lt; n; i++),要打印前 n 个元素,您需要从 i = n - 1 迭代到 i = 0,也就是 @987654326 @。


PS:基于 0 的索引 => 定位基数后无需额外计算来查找第一个元素;)

【讨论】:

    【解决方案2】:

    如上所述,在 C++ 中,数组索引是从零开始的。此外,您应该检查您是否真的有 10 个元素。 'wordArr' 和 'countArr' 是未定义的,可能在别处声明。这是我对您想要实现的目标的猜测。 std::min() 函数来自算法标准库。

    #include <algorithm>
    #include <iostream>
    
    using namespace std;
    
    void printarrayString(string arr[], int size)
    {
        //Check we have 10 elements. If not, use fewer
        int nElementsToPrint = min(10,size);
    
        //First 10 (if possible) elements
        for(int i =0; i < nElementsToPrint; i++)
        {
             cout << "Word: " << arr[i] << " Occurs: " << i;
        }
        cout << endl;
    
        //etc etc 
    }
    

    你可以用同样的方式处理最后 10 个元素,虽然你没有说你是否希望它们与字符串中的顺序相同(从 (size-nElementsToPrint) 开始并使用 i++ 转发),还是最后一个元素优先(从 (size-1) 开始并以 i-- 向后)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2013-12-26
      相关资源
      最近更新 更多