将输入存储到Arrays C ++中

时间:2013-10-17 06:53:09

标签: c++ arrays

我正在学习数组,我想要尝试的是首先让用户输入x,y值4次 例如

第一次

x = 1
y = 3

第二次

 x = 2
 y = 3

第三次

 x = 3
 y = 1

第四次

 x = 1
 y = 3

。然后将用户键入的值存储在数组中4次并打印出来,但我得到了一些奇怪的输出。

我的输出

10001711642800 <-- some weird output

预期产出

1,3
2,3
3,1
1,3

代码(不工作)

      int x;
      int y;

     //request the user to enter x and y value 4 times.
     for (int i=1; i<5; i++) {
        cout << i << "Please enter x-cord." << endl;
        cin >> x;

        cout <<i << "Please enter y-cord." << endl;
        cin >> y;
    }
     //intitalize the array size and store the x,y values   
    int numbers[4][4] = { 
        x, y
    };
    //loop through 4 times to print the values.
    for (int i = 0; i<5; i++) {
        cout << numbers[i][i];
    }

我知道可以用向量完成,但现在我正在尝试使用数组,因为我在使用数组方面很弱。

4 个答案:

答案 0 :(得分:5)

你在这里混淆了许多事情。

  1. for - 循环中,您将在循环的每次迭代中覆盖存储在xy中的值。
  2. int numbers[4][4]创建一个包含总共16个元素的二维数组。你想要的是int numbers[4][2]
  3. 您的数组初始化不完整,因为xy仅包含用户输入的最后两个值,而不是全部8个。
  4. 要解决此问题,您应该在for - 循环之前创建数组,然后将用户直接输入的值存储到数组中。

答案 1 :(得分:4)

使用此代码:

int numbers[4][2];
for(int i=0;i<4;i++)
{
   cout<<i<<": Please enter x-cord."<<endl;
   cin>>numbers[i][0];
   cout<<i<<": Please enter y-cord."<<endl;
   cin>>numbers[i][1];
}

for (int i = 0; i<4; i++) 
{
        cout << numbers[i][0]<<"   "<<numbers[i][1];
}

答案 2 :(得分:2)

您不会将从用户收到的输入存储在任何阵列中。它们在循环中一次又一次地被覆盖。将它们存储在一个数组中然后显示它。

 //intitalize the array size and store the x,y values   
int numbers[4][4] = { 
    x, y
};

这不是必需的。由于您要覆盖数组的内容,因此无需使用一些随机变量对其进行初始化。事实上,变量xy根本不需要。

#include <iostream>

int main(int argc, char *argv[])
{
    // you need 4 arrays of 2 numbers, not 4x4 but 4x2
    int numbers[4][2] = { { } };        // initialize all of them to 0
    for (size_t i = 0; i < 4; ++i)
    {
        std::cout << "x = ";
        std::cin >> numbers[i][0];      // store the input directly in the array
        std::cout << "y = ";            // instead of using a dummy
        std::cin >> numbers[i][1];
    }

    // display array contents
    for (size_t i = 0; i < 4; ++i)
    {
        std::cout << numbers[i][0] << ", " << numbers[i][1] << std::endl;
    }
}

答案 3 :(得分:2)

首先,您必须声明需要填充的变量;

 // A new data type which holds two integers, x and y
 struct xy_pair {
     int x;
     int y;
 };

 // A new array of four xy_pair structs
 struct xy_pair numbers[4];

然后,您可以开始填写它。

 //request the user to enter x and y value 4 times.
 for (int i=1; i<5; i++) {
    cout << i << "Please enter x-cord." << endl;
    cin >> numbers[i].x;

    cout <<i << "Please enter y-cord." << endl;
    cin >> numbers[i].y;
}

然后,你可以打印它!

//loop through 4 times to print the values.
for (int i = 0; i<5; i++) {
    cout << "X is " << numbers[i].x << " and Y is " << numbers[i].y << endl;
}

PS!我自己没有运行代码,如果它不起作用,请告诉我。