Question

Je suis en train de lire un fichier dans le format suivant

1001    16000     300    12.50
2002    24000     360    10.50
3003    30000     300     9.50

où les éléments sont les suivants:. Id prêt, principal, mois, taux d'intérêt

Je ne suis pas sûr de ce qu'il est que je fais mal avec mon flux de chaîne d'entrée, mais je ne suis pas en train de lire correctement les valeurs parce que l'identifiant de prêt est lu correctement. Tout le reste est nul. Désolé, c'est un devoir, mais je voulais juste savoir si vous pouviez me aider à identifier mon erreur.

if( inputstream.is_open() ){

        /** print the results **/
        cout << fixed << showpoint << setprecision(2);
        cout << "ID " << "\tPrincipal" << "\tDuration" << "\tInterest" << "\tPayment" <<"\tTotal Payment" << endl;
        cout << "---------------------------------------------------------------------------------------------" << endl;

        /** assign line read while we haven't reached end of file **/
        string line;
        istringstream instream;
        while( inputstream >> line ){
            instream.clear();
            instream.str(line);

            /** assing values **/
            instream >> loanid >> principal >> duration >> interest;


            /** compute monthly payment **/
            double ratem = interest / 1200.0;
            double expm = (1.0 + ratem);
            payment = (ratem * pow(expm, duration) * principal) / (pow(expm, duration) - 1.0);

            /** computer total payment **/
            totalPayment = payment * duration;

            /** print out calculations **/
            cout << loanid << "\t$" << principal <<"\t" << duration << "mo" << "\t" << interest << "\t$" << payment << "\t$" << totalPayment << endl;

        }
    }
Était-ce utile?

La solution

Vous ne lisez pas linewise. Remplacer la condition par

while( getline(inputstream, line) )

Si vous utilisez operator>> il extraira seul le premier mot à line.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top