Issue with an algorithm and returning the value

The issue lies within my .cpp file (not the tester or header). Basically I go to run it but it says I need to return a value. I'm confused as to what exactly I'm returning as I'm having a bit of a brain fart. Any help would be appreciated.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//(.h file)
#include <iostream>
#include <iomanip>
#include <string>
#include <string.h>
using namespace std;

class TextVersionOfNumber
{
private:
	int amount;
public:
	string getTextVersionOfNumber();
	void setAmount(double);
};

//(.cpp file)
#include "TextVersionOfNumber.h"


string TextVersionOfNumber::getTextVersionOfNumber()
{
	string upto20[20] = { "", "one", "two", "three", "four",
		"five", "six", "seven", "eight", "nine", "ten",
		"eleven", "twelve",
		"thirteen", "fourteen", "fifteen", "sixteen", "seventeen",
		"eighteen", "nineteen" };

	string tens[10] = { "", "ten", "twenty", "thirty", "forty",
		"fifty", "sixty", "seventy", "eighty", "ninety" };

	int _amount;
	string ret_val;

	if (amount < 0)
		cout << "Given amount is negative.";
	amount = abs(amount);
	_amount = amount / 1000;
	if (_amount>0)
		ret_val += upto20[_amount], " thousand ";
	amount %= 1000;
	_amount = amount / 100;
	if (_amount > 0)
		ret_val += upto20[_amount], " hundred ";
	amount %= 100;
	if (amount >= 20)
	{
		_amount=amount / 10;
		if (_amount > 0)
			ret_val += tens[_amount], " ";
			
	}
	else if (amount >= 10)
	{
		ret_val += upto20[amount], " ";
		return;
	}
	amount %= 10;
	if (amount > 0)
		ret_val += upto20[amount];
	


	return ret_val;
};

//tester file
//  Chapter 12--  Assignment 14:  Check Writer
// This program can convert a dollar and cents amount given in 
// numerical form to a word description of the amount.
#include <iostream>
#include <iomanip>
#include <string>
#include <string.h>
using namespace std;

#include "TextVersionOfNumber.h"
// Assume a maximum amount of $10,000

int main()
{
	string date = "03/05/2016", payee = "Michael Wille";
	TextVersionOfNumber checkAmount;
	double testAmounts[] = { 0, .01, .25, 12, 12.45, 19, 19.02,
		19.45, 20, 20.45,
		34, 56.78, 100, 109, 119.78,
		450, 678.90, 1000, 1009.45, 1056,
		1234, 1567.98, 9999, 9999.99 };

	for (int i = 0; i < sizeof(testAmounts) / sizeof(double); i++)
	{
		double an_amount = testAmounts[i];
		checkAmount.setAmount(an_amount);
		cout << setprecision(2) << fixed;
		cout << setw(60) << right;
		cout << "Date: " << date << endl;
		cout << "Pay to the order of:  " << payee << "\t\t\t";
		cout << "$" << an_amount << endl;
		cout << checkAmount.getTextVersionOfNumber() << endl;
		cout << "---------------------------------------------------------------------\n";
	}
	system("pause");
	return 0;
}
line 56: TextVersionOfNumber::getTextVersionOfNumber() is expecting a string to be returned. You're not returning anything.
Last edited on
Alright, I knew that, I guess I should have clarified that I don't know exactly what to set up to get a returned value.
Well, what is it you expect to be returned at that point? An empty string?
1
2
 
  return string ();  // defaults to an empty string 

Topic archived. No new replies allowed.