2016-12-06 3 views
-1

Ich habe eine Textdatei, die eine Liste von zufälligen fraktionalen mathematischen Problemen enthält. Ich kann ein zufälliges Problem ausgeben, das der Benutzer lösen muss. Ich habe jedoch Schwierigkeiten, meine Funktion Ausgabe der Probleme Zahlen. Zum Beispiel ist das zufällige, erzeugte String-Problem "-1/4 + 1/20", der Zweck der Funktion, findFractions, besteht darin, -1, 4, 1, 20 zu erhalten und sie Variablen zuzuordnen, damit ich sie berechnen kann Die Antwort des Problems und später meine gcd-Funktion verwenden. In diesem Fall kann ich nur die Nummer -1 ausgeben. Ich kann 4 verschiedene Funktionen ausführen, aber ist es möglich, eine Funktion zu verwenden. Ich kann übrigens noch keine Hinweise verwenden.Wie Sie mehrere Variablen in einem Anruf zuweisen?

#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

Sie nicht mehrere Werte wie diese zurückgeben kann: 'return n1, d1, n2, d2,' es wird prüfen, der letzte Wert ('d2') nur (suchen Sie den Komma-Operator). Verwenden Sie Referenzparameter, um mehr als einen Wert von einer Funktion auszugeben. –

Antwort

2

Sie Referenzparameter verwenden können mehr als ein Ergebnis von einer Funktion zu erhalten:

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; 
} 
+0

Vielen Dank, durch Verweis weitergegeben hat den Trick. –

+0

@JamesHenrick Sicher, de nada. –

Verwandte Themen