【问题标题】:What other thing i can use except array here?除了数组,我还能用什么?
【发布时间】:2020-11-06 07:50:36
【问题描述】:

有没有办法摆脱这个程序中的数组?我不允许用std::arraystd::vector 这样做。

#include <iostream>
using namespace std;
int main()
{
    int upper,i,j=0,k=0;
    int arr1[1000],arr2[1000];
    cout<<"Enter the upper bound :";
    cin>>upper;
    for(i=0 ; i<upper ; i++)
    {
        if(i%2 == 0)
        {
            arr1[j] = i;
            j++;
        }
        else
        {
            arr2[k] = i;
            k++;
        }
    }
    cout<<"List of even numbers :";
    for(i = 0; i<j ; i++)
    {
        cout<<arr1[i]<<" ";
    }
    cout<<"\n";
    cout<<"List of odd numbers :";
    for(i = 0; i<k ; i++)
    {
        cout<<arr2[i]<<" ";
    }
    return 0;
}

【问题讨论】:

  • std::vector 听起来是个不错的选择
  • 对不起,我忘了提,但向量和数组都不允许
  • 这里到底发生了什么?代码中没有 cmets,也没有解释你在做什么。你只是打印一堆偶数,然后是一堆奇数吗?如果是这样,数组似乎没有任何有用的目的。你可以写两个循环来做同样的事情。
  • 提示:要跳过数字,请在循环中使用i += 2

标签: c++ loops for-loop sequence


【解决方案1】:

不是设置两个数组的元素,而是先输出给定范围内的偶数,然后输出奇数。

例如

#include <iostream>

int main() 
{
    std::cout << "Enter the upper bound: " ;

    unsigned int n = 0;
    std::cin >> n;
    
    std::cout << "List of even numbers :";
    for ( unsigned int i = 0; i < n; i += 2 )
    {
        std::cout << i << ' ';
    }
    std::cout << '\n';
    
    std::cout << "List of odd numbers :";
    for ( unsigned int i = 1; i < n; i += 2 )
    {
        std::cout << i << ' ';
    }
    std::cout << '\n';

    return 0;
}

程序输出可能看起来像

Enter the upper bound: 10
List of even numbers :0 2 4 6 8 
List of odd numbers :1 3 5 7 9

【讨论】:

    【解决方案2】:

    快速而肮脏的解决方案。

    #include <iostream>
    
    int main() 
    { 
    int upper;
    
    std::cout << "Enter the upper bound :";
    std::cin >> upper;
    std::cout<<"List of even numbers :";
    for (int i=0; i<upper;i+=2)
       std::cout <<i<<" ";
    std::cout <<"\n";
    std::cout<<"List of odd numbers :";
    for (int i=1; i<upper;i+=2)
       std::cout <<i<<" ";
    
    return 0; 
    

    }

    【讨论】:

      【解决方案3】:

      我不会分析你的其余代码,而是专注于这个问题:

      有什么办法可以去掉这个程序中的数组?

      由于您不能使用std::vector&lt;int&gt;,您可以自己动态分配内存。

      #include <cstddef>
      #include <iostream>
      #include <memory>
      
      int main()
      {
          size_t upper;
      
          std::cout << "Enter the upper bound :";
          if(not (std::cin >> upper)) return 1; // input failed, exit
      
          // create unique_ptr<int[]> poiting to an array of "upper" number of elements:
          auto arr1 = std::make_unique<int[]>(upper);
          auto arr2 = std::make_unique<int[]>(upper);
      
          // ...
      

      【讨论】:

      • 他说向量是不允许的。
      • @user10191234 哦,我只在问题中看到了数组。好收获
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多