如何在一次调用中分配多个变量?

时间:2016-12-06 04:38:48

标签: c++

我有一个包含随机分数数学问题列表的文本文件。我能够输出随机问题供用户解决;但是,我很难让我的函数输出问题数字。例如,生成的随机字符串问题是“-1/4 + 1/20”,函数findFractions的目的是得到-1,4,1,20并将它们分配给变量以便我可以计算问题的答案,后来使用我的gcd功能。在这种情况下,我只能输出数字-1。我可以创建4个单独的函数,但是可以使用一个函数。顺便说一句,我不能使用指针。

#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<sstream>
#include<cstdlib>
#include<ctime>

using namespace std;

int const MAX_PROBLEMS = 50;
char findOperator(string problem);
char findfractions(string problem);

int main()
{
    int op, int frac;
    string oneProblem, problems[MAX_PROBLEMS], question;
    int mode, count = 0;

    srand(static_cast<unsigned int>(time(0)));
    ifstream mathProblems;
    mathProblems.open("P4Problems.txt");
        if (!mathProblems)
        {
            cout << "Error : No file found. " << endl;
            return 0;
        }
    getline(mathProblems, oneProblem);
        while(!mathProblems.eof())
        {
            problems[count] = oneProblem;
            count ++;
            getline(mathProblems, oneProblem);
        }
    int randIndex = rand() % count;
        cout << problems[randIndex] << endl; // Displays a random problem
        question = problems[randIndex];
        op = findOperator(question); // Retrieves problem's symbol i.e. *
        frac = findFractions(question); //Retrieves only one number


char findOperator(string problem)
{
    char op, slash;
    int n1, d1, n2, d2;
    istringstream iss;

    iss.str(problem);
    iss >> n1 >> slash >> d1 >> op >> n2 >> slash >> d2;
    return op;
}
char findFraction(string problem)
{
    char op, slash;
    int n1, d1, n2, d2;
    istringstream iss;

    iss.str(problem);
    iss >> n1 >> slash >> d1 >> op >> n2 >> slash >> d2;
    return n1, d1, n2, d2;
}

1 个答案:

答案 0 :(得分:2)

您可以使用参考参数从函数中获取多个结果:

void findFraction(string problem, int &n1, int&d1, int& n2, int& d2)
{
    char op, slash;
    istringstream iss(problem);
    iss >> n1 >> slash >> d1 >> op >> n2 >> slash >> d2;
}