Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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))        {          cout
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote