我有一个包含随机分数数学问题列表的文本文件。我能够输出随机问题供用户解决;但是,我很难让我的函数输出问题数字。例如,生成的随机字符串问题是“-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;
}
答案 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;
}