我无法输入数组的数据

时间:2014-05-12 09:26:02

标签: c++ arrays

我想为nc数组输入e次值。以下程序不允许我输入'n'的值。你能告诉我哪里出错了吗?

#include <iostream>

using namespace std;

int main()
{
   int n,c[n],e[n];
   cin>>n;
   for(int i=0;i<n;i++){
    cin>>c[i]>>e[i];
   }
    return 0;
}

4 个答案:

答案 0 :(得分:1)

&#34; N&#34;应该在使用它来修复数组大小之前定义。此外, const int 或常量应该用于声明数组大小而不是普通的 int

为了使用纯数据类型,您可以像

一样动态初始化数组
vector<int> a(n); or
int a = new int[n]

答案 1 :(得分:1)

int n,c[n],e[n];

此声明在堆栈上创建具有随机大小的数组ce,因为n作为自动变量使用随机值初始化。相反,您需要在堆上动态创建数组或使用std::vector

示例:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // your code goes here
    int n;
    vector<int> v;
    std::cin >> n;
    v.resize( n);
    for( int i = 0; i < n; ++i) {
        cin >> v[i];
    }
    for( int i = 0; i < n; ++i) {
        cout << v[i];
    }
    return 0;
}

http://ideone.com/QhgfNv

答案 2 :(得分:1)

行中
int n,c[n],e[n];

计算机不知道'n'的确切值,所以它不能分配数组的内存。

最简单的解决方案是使用固定数字创建数组,并在知道n的值后检查n,如下所示:

int n, c[1024], e[1024];
cin >> n;
if (n > 1024) { /* error */ }

另一种方式是在你知道n:

的值之后的malloc内存
int n;
cin >> n;
int *c = new int[n];
int *e = new int[n];
xxxx
delete [] c;
delete [] e;

答案 3 :(得分:-2)

您可以尝试这样的事情:

#include <iostream>

using namespace std;

int main()
{
  int temp = 100; /*Random value*/
  int c[temp];
  int e[temp];
  int n;
  cin>>n;
  for(int i=0;i<n;i++){
    cin>>c[i]>>e[i];
  }
   return 0;
}

现在,我选择temp作为100,但您可以在int可以存储的情况下做大事。现在,如果n低于temp,那么您的for循环将让您保存您的值而不会遇到麻烦。