Error: [Linker error] #160000 reference to `digit_to_int(char)\' ld returned 1 e
ID: 3617420 • Letter: E
Question
Error: [Linker error] #160000 reference to `digit_to_int(char)' ld returned 1 exit status Here is my program: #include<iostream> #include<fstream> #include<cstdlib> #include<cctype>using namespace std;
int digit_to_int(char c);
class Money { public: friend istream& operator>>(istream& ins, Money& amount); friend ostream& operator<<(ostream& outs, const Money& amount); friend bool operator<(const Money& left_side, const Money& right_side);
friend bool operator<=(const Money& left_side, const Money& right_side);
friend bool operator>(const Money& left_side, const Money& right_side);
friend bool operator>=(const Money& left_side, const Money& right_side);
Money(long dollars); Money(long dollars,intcents); Money(); doubleget_value()const;
private: long all_cents; };
Money::Money(long dollars,int cents) { if(dollars*cents<0) { cout <<"Illegal values fordollars and cents. "; exit(1); } all_cents = dollars * 100+cents; } Money::Money(long dollars) { all_cents=dollars*100; } Money::Money() { all_cents=0; } double Money::get_value() const
{ return all_cents*0.01; } istream& operator >>(istream& ins,Money& amount) {
char one_char, decimal_point, digit1,digit2; long dollars; int cents; bool negative; ins>>one_char; if(one_char=='-') { negative=true; } ins>>dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2))
{ cout <<"Error illegalform of money input. "; exit(1); }
cents=digit_to_int(digit1)*10+digit_to_int(digit2); amount.all_cents=-amount.all_cents; return ins; }
ostream& operator <<(ostream&outs, const Money& amount) { long positive_cents,dollars,cents; positive_cents=labs(amount.all_cents); dollars=positive_cents/100; cents=positive_cents%100; if(amount.all_cents<0) outs<<"-$"<<dollars<<'.'; else outs<<"$"<<dollars<<'.';
if(cents<10) outs<<'0'; outs<<cents; return outs; } bool operator <(const Money& left_side,const Money& right_side) { return left_side.all_cents<right_side.all_cents; } bool operator <=(const Money& left_side, constMoney& right_side) { return left_side.all_cents<=right_side.all_cents; } bool operator >(const Money& left_side, constMoney& right_side) { return left_side.all_cents>right_side.all_cents; } bool operator >=(const Money& left_side, constMoney& right_side) { return left_side.all_cents>=right_side.all_cents; } int main() { Money amount; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout <<"Input file openingfailed. "; exit(1); } out_stream.open("outfile.dat"); if(out_stream.fail()); { cout <<"Output file openingfailed. "; exit(1); } in_stream>>amount; out_stream<<amount<<"copiedfrom the file infile.dat. "; cout<<amount<<"copied from file infile.dat. "; in_stream.close(); out_stream.close();
system("pause"); return 0; } Here is my program: #include<iostream> #include<fstream> #include<cstdlib> #include<cctype>
using namespace std;
int digit_to_int(char c);
class Money { public: friend istream& operator>>(istream& ins, Money& amount); friend ostream& operator<<(ostream& outs, const Money& amount); friend bool operator<(const Money& left_side, const Money& right_side);
friend bool operator<=(const Money& left_side, const Money& right_side);
friend bool operator>(const Money& left_side, const Money& right_side);
friend bool operator>=(const Money& left_side, const Money& right_side);
Money(long dollars); Money(long dollars,intcents); Money(); doubleget_value()const;
private: long all_cents; };
Money::Money(long dollars,int cents) { if(dollars*cents<0) { cout <<"Illegal values fordollars and cents. "; exit(1); } all_cents = dollars * 100+cents; } Money::Money(long dollars) { all_cents=dollars*100; } Money::Money() { all_cents=0; } double Money::get_value() const
{ return all_cents*0.01; } istream& operator >>(istream& ins,Money& amount) {
char one_char, decimal_point, digit1,digit2; long dollars; int cents; bool negative; ins>>one_char; if(one_char=='-') { negative=true; } ins>>dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2))
{ cout <<"Error illegalform of money input. "; exit(1); }
cents=digit_to_int(digit1)*10+digit_to_int(digit2); amount.all_cents=-amount.all_cents; return ins; }
ostream& operator <<(ostream&outs, const Money& amount) { long positive_cents,dollars,cents; positive_cents=labs(amount.all_cents); dollars=positive_cents/100; cents=positive_cents%100; if(amount.all_cents<0) outs<<"-$"<<dollars<<'.'; else outs<<"$"<<dollars<<'.';
if(cents<10) outs<<'0'; outs<<cents; return outs; } bool operator <(const Money& left_side,const Money& right_side) { return left_side.all_cents<right_side.all_cents; } bool operator <=(const Money& left_side, constMoney& right_side) { return left_side.all_cents<=right_side.all_cents; } bool operator >(const Money& left_side, constMoney& right_side) { return left_side.all_cents>right_side.all_cents; } bool operator >=(const Money& left_side, constMoney& right_side) { return left_side.all_cents>=right_side.all_cents; } int main() { Money amount; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout <<"Input file openingfailed. "; exit(1); } out_stream.open("outfile.dat"); if(out_stream.fail()); { cout <<"Output file openingfailed. "; exit(1); } in_stream>>amount; out_stream<<amount<<"copiedfrom the file infile.dat. "; cout<<amount<<"copied from file infile.dat. "; in_stream.close(); out_stream.close();
system("pause"); return 0; } #include<iostream> #include<fstream> #include<cstdlib> #include<cctype>
using namespace std;
int digit_to_int(char c);
class Money { public: friend istream& operator>>(istream& ins, Money& amount); friend ostream& operator<<(ostream& outs, const Money& amount); friend bool operator<(const Money& left_side, const Money& right_side);
friend bool operator<=(const Money& left_side, const Money& right_side);
friend bool operator>(const Money& left_side, const Money& right_side);
friend bool operator>=(const Money& left_side, const Money& right_side);
Money(long dollars); Money(long dollars,intcents); Money(); doubleget_value()const;
private: long all_cents; };
Money::Money(long dollars,int cents) { if(dollars*cents<0) { cout <<"Illegal values fordollars and cents. "; exit(1); } all_cents = dollars * 100+cents; } Money::Money(long dollars) { all_cents=dollars*100; } Money::Money() { all_cents=0; } double Money::get_value() const
{ return all_cents*0.01; } istream& operator >>(istream& ins,Money& amount) {
char one_char, decimal_point, digit1,digit2; long dollars; int cents; bool negative; ins>>one_char; if(one_char=='-') { negative=true; } ins>>dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2))
{ cout <<"Error illegalform of money input. "; exit(1); }
cents=digit_to_int(digit1)*10+digit_to_int(digit2); amount.all_cents=-amount.all_cents; return ins; }
ostream& operator <<(ostream&outs, const Money& amount) { long positive_cents,dollars,cents; positive_cents=labs(amount.all_cents); dollars=positive_cents/100; cents=positive_cents%100; if(amount.all_cents<0) outs<<"-$"<<dollars<<'.'; else outs<<"$"<<dollars<<'.';
if(cents<10) outs<<'0'; outs<<cents; return outs; } bool operator <(const Money& left_side,const Money& right_side) { return left_side.all_cents<right_side.all_cents; } bool operator <=(const Money& left_side, constMoney& right_side) { return left_side.all_cents<=right_side.all_cents; } bool operator >(const Money& left_side, constMoney& right_side) { return left_side.all_cents>right_side.all_cents; } bool operator >=(const Money& left_side, constMoney& right_side) { return left_side.all_cents>=right_side.all_cents; } int main() { Money amount; ifstream in_stream; ofstream out_stream; in_stream.open("infile.dat"); if(in_stream.fail()) { cout <<"Input file openingfailed. "; exit(1); } out_stream.open("outfile.dat"); if(out_stream.fail()); { cout <<"Output file openingfailed. "; exit(1); } in_stream>>amount; out_stream<<amount<<"copiedfrom the file infile.dat. "; cout<<amount<<"copied from file infile.dat. "; in_stream.close(); out_stream.close();
system("pause"); return 0; }
Explanation / Answer
x.Xlor="red">please rate - thanks your missing function digit_to_int I think this is what it should look like int digit_to_int(char d) {return d-48; } ------------------------------------------------------------ #include #include #include #include using namespace std; int digit_to_int(char c); class Money { public: friend istream& operator >>(istream& ins, Money& amount); friend ostream& operator >dollars>>decimal_point>>digit1>>digit2; if(one_char!='$'||decimal_point!='.'||!isdigit(digit1)||!isdigit(digit2)) { coutRelated Questions
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.