如何将多个值存储到数组中以便稍后打印出来?

时间:2014-02-17 20:05:05

标签: c++

好的,所以我在这里插入我正在开发的这个程序的代码来帮助我完成工作。我不想详细介绍它是如何使用的,但最重要的是我正在创建一个程序:从用户获取两个值,操纵它们,然后将它们存储到一个数组中。

现在我可以通过一个非常简单的线性程序来做到这一点,但是我遇到困难的时候,当程序启动它要求用户输入两个值时,程序然后存储它,然后当它再次循环时,它将要求用户再提供两个值,然后我希望它再次存储,存储的次数取决于用户需要的数据点数量,然后最后我希望它打印出他们输入的所有操纵值,最后我希望它将它导出到一个txt文件,但稍后会出现。我只是想让基本失效。任何人都可以帮我这个吗?

#include <iostream>
#include <set>

double dCoordinates(double x)
{
    return x / 1000;
}

void Store(int x , int y)
{
    int anCoorValues[] = { x, y };
}

int main()
{
    std::cout << "How many data points do you need to enter?" << std::endl;
    int nAmountOfDataPoints;
    std::cin >> nAmountOfDataPoints;

    for (int nCount = 0; nCount < nAmountOfDataPoints; nCount++)
    {
        std::cout << "Enter E/W Coordinates" << std::endl;
        double dEW;
        std::cin >> dEW;

        std::cout << "Enter N/S Coordinates" << std::endl;
        double dNS;
        std::cin >> dNS;

        Store(dCoordinates(dEW),dCoordinates(dNS));
    }
}

2 个答案:

答案 0 :(得分:1)

您应该在main中声明一个容器,然后在需要时将其作为参数传递给其他函数。然后在任何时候你都可以输出容器。在您的情况下,最好使用std::vector<std::pair<double, double>>

例如(顺便说一下,为什么函数Store的参数类型为int?)

#include <vector>
#includde <utility>

double dCoordinates( double x )
{
    return x / 1000;
}

void Store( std::vector<std::pair<double, double>> &v, double x , double y )
{
    v.push_back( { x, y } );
}

int main()
{
    std::cout << "How many data points do you need to enter?" << std::endl;
    int nAmountOfDataPoints;
    std::cin >> nAmountOfDataPoints;

    std::vector<std::pair<double, double>> v;
    v.reserve( nAmountOfDataPoints ) ;

    //...
    // Here you can output the folled vector

    for ( const std::pair<double, double> &p : v )
    {
        std::cout << "( " << p.first << ", " << p.second << " )" << std::endl;
    } 

答案 1 :(得分:1)

查看此代码:

#include <iostream>  // std::cout
#include <vector>    // std::vector
#include <utility>   // std::pair, std::make_pair()
#include <algorithm> // std::for_each()

int main()
{
    std::vector<std::pair<double, double> > entered_values;

    std::cout << "How many data points do you need to enter?" << std::endl;
    int nAmountOfDataPoints;
    std::cin >> nAmountOfDataPoints;

    entered_values.reserve(nAmountOfDataPoints);


    for (int nCount = 0; nCount < nAmountOfDataPoints; ++nCount)
    {
        std::cout << "Enter E/W Coordinates" << std::endl;
        double dEW;
        std::cin >> dEW;

        std::cout << "Enter N/S Coordinates" << std::endl;
        double dNS;
        std::cin >> dNS;

        entered_values.push_back(std::make_pair(dEW, dNS));
    }

    std::for_each(std::begin(entered_values), std::end(entered_values), [] (std::pair<double, double> const &i) {std::cout << i.first << "," << i.second << std::endl;});
}