Je dois écrire un programme qui utilise les fonctions suivantes, mais je ne sais pas comment procéder à partir de maintenant. Essentiellement, je veux que getValue utilise les flux d'entrée et de sortie référencés dans la fonction principale (cin et cout, dans ce cas), mais j'obtiens de nombreuses erreurs. Si besoin, je peux fournir mon fichier d'en-tête.

#include "lab6.h"
#include <cmath>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <fstream> 
using namespace std;

double getValue(istream inputStream, ostream outputStream, string promptUser) {
    double number;
    outputStream << promptUser;
    inputStream >> number;
    return number;
}


void convertRectToPolar(istream& inputStream, ostream& outputStream) {
    double x, y;
    string promptUser;
    promptUser = "Input the x value: ";
    x = getValue(inputStream, outputStream, promptUser);
    outputStream << "Input the y value: ";
    y = getValue(inputStream, outputStream, promptUser);
    if (inputStream.fail()) {
        outputStream << "Error: inputStream has failed.";
    }
}

int main() {

    convertRectToPolar(cin, cout);

}
c++
2
comatoad 11 nov. 2020 à 00:53

1 réponse

Meilleure réponse

istream inputStream et ostream outputStream ne fonctionneront pas. Les flux ne sont pas copiables. Faites ces références aussi.

double getValue(istream& inputStream, ostream& outputStream, string promptUser) {
    double number;
    outputStream << promptUser;
    inputStream >> number;
    return number;
}

Remarque : vous n'avez pas besoin d'affecter vos chaînes d'invite à une variable avant d'appeler getValue. Insérez simplement l'invite dans l'appel et elle sera convertie en std::string :

void convertRectToPolar(istream& inputStream, ostream& outputStream) {
    double x = getValue(inputStream, outputStream, "Input the x value: ");
    double y = getValue(inputStream, outputStream, "Input the y value: ");

    if (inputStream.fail()) {
        outputStream << "Error: inputStream has failed.";
    }
}
2
Ted Lyngmo 10 nov. 2020 à 21:59