从输入填充数组中获取一个元素并使用它

问题描述 投票:0回答:1

所以我测试了数组,我可以通过 cin 手动填充数组。然而,当我尝试通过从数组中获取一个值以在 switch/case 系统中使用它来测试连接时,我一次又一次地收到错误,指向我想要提取 a 的 n-1 索引的行n 长填充数组。有人知道如何解决这个问题吗?我对 C++ 还很陌生。

#include <iostream>
#include <cstdlib>
#include <bits/stdc++.h> 
using namespace std;

int main()
{

    int n = 0;

    std::cout << "Enter your array size: ";
    std::cin >> n;
    
    
    
    int array [n];
    


     std::cout << "Input the Elements: \n";

        for(int i=0; i<n; i++)
        {
       
        std::cout << " ";
        std::cin >> array[i];

        }

        int ar_element = std::get<n-1>(array);
         
         switch (ar_element)
            {

        case 1:

        std::cout << "Hello World";
        break;
        

        case 2:
        std::cout << "Hello not world";
        break;
     

            }

 
    
   
}


显然这个程序根本没有任何目的,我只是想在用户输入数组之后得到不同的基于 if 的答案之间创建一个连接 - 无论这对 ^^

有用吗

我希望能得到 n 长数组的 n-1 个元素,以便在 switch 语句中使用它

c++ arrays switch-statement element
1个回答
0
投票

这应该是您的代码的工作版本:

#include <iostream>

int main(void)
{
    int n;
    std::cout << "Enter your array size: ";
    std::cin >> n;
    
    int* array = new int[n];

    std::cout << "Input the Elements: \n";

    for(int i=0; i<n; i++)
        std::cin >> array[i];

    int ar_element = array[n-1];
    switch (ar_element)
    {
        case 1:
            std::cout << "Hello World";
            break;

        case 2:
            std::cout << "Hello not world";
            break;
    }

    delete[] array;

    return 0;
}

这是错误/错误/评论的列表:

  • int array [n];
    :C++ 标准(不是 C)不允许您使用非常量表达式来表示数组的大小。这里
    n
    是一个变量,它的值只有在运行时才知道。您有两个选择:使数组动态分配(使用
    new[]
    delete[]
    ,就像在我的代码中一样),或者以最大长度分配堆栈,并且仅使用前
    n
    元素(声明为
    int array[MAX_N]; 
    ,无需删除);
  • int ar_element = std::get<n-1>(array);
    :为了获取 C 数组的元素,可以使用方括号 (
    array[n-1]
    )。同样在 C++ 中,当您有
    class_or_function<something>
    形式的表达式时,
    something
    必须是编译时已知的表达式(并且
    n-1
    在运行时已知)。
    std::get
    用于获取
    std::tuple
    的元素(参见 docs);
  • return 0;
    :尽管
    main
    函数是一个特殊函数,但最好的做法是显式编写
    return
    (正如您声明的
    main
    返回
    int
    ,而不是
    void
    );
  • using namespace std;
    :这行代码用于写
    cin
    cout
    等,而不是
    std::cin
    std::cout
    、...。在你的情况下,你没有使用它,所以它没有用。一般来说,正如 @Jesper Juhl 在评论中提到的,
    using namespace std;
    被认为是不好的做法(请参阅他提供的链接:为什么“使用命名空间 std;”被认为是不好的做法?);
  • 我删除了您没有使用的
    #include
© www.soinside.com 2019 - 2024. All rights reserved.