Reputation: 33
Hi guys I'm working on my last assignment of the computer science class. I think I'm doing everything fine but something is wrong. Can you take a look at it and tell what I'm doing wronger here.
here is what I get when I try to submit online on zybooks site: "Your program produced no output" Expected: Ryan Hermle 22.99 Lochness Monster 3.50 Wonder Woman 123456.78
here are instructions from professor:
Constructor:
Takes a string parameter and stores that as fileName. Does not need to do anything else.
append:
Takes a record as a parameter that contains a string and a double Open an output file stream in append mode using fileName set its precision to 2 and fixed Output the name, newline, the money, newline
searchName:
Open an input file stream with fileName Loop while a getline and a double extraction are successful if the string parameter is equal to the name read from the getline, then return the double If the loop finishes without finding anything, return -1 to indicate that name was not found.
getData:
Open an input file stream with fileName Construct an ostringstream Set its precision to 2 and fixed Loop while a getline and a double extraction are successful ignore the \n left by the >> extraction write the string, newline, double, newline to the ostringstream return the string contained by the ostringstream
here is my main:
#include "Database.h"
int main()
{
Database db("data.txt");
db.append(Record{"Ryan Hermle", 22.99});
db.append(Record{"Lochness Monster", 3.50});
db.append(Record{"Wonder Woman", 123456.78});
}
and here is my Database.cpp file:
#include "Database.h"
Database::Database(string file)
{
fileName = file;
}
void Database::append(Record data)
{
ofstream out;
out.open(fileName, ios::app);
out << setprecision(2) << fixed;
cout << data.name << endl;
cout << data.money << endl;
out.close();
}
double Database::searchName(string n)
{
Record s;
ifstream in;
in.open(fileName);
while (getline(in, n) >> s.money)
{
in.ignore();
if (n == s.name)
{
return s.money;
}
}
return -1;
}
string Database::getData()
{
Record s;
ifstream ifs;
ifs.open(fileName);
ostringstream oss;
oss << setprecision(2) << fixed;
while(getline(ifs, s.name) >> s.money)
{
ifs.ignore();
oss << s.name << endl << s.money << endl;
cout << oss.str();
}
return oss.str();
}
Upvotes: 0
Views: 477
Reputation: 33
Thanks for everyone who replied to my post. I was able figure out the error in my program.
The error was in append Function: cout << data.name << endl; cout << data.money << endl;
It should be like this: out << data.name << endl; out << data.money << endl;
Upvotes: 1