Program to calculate area and circumference not outputting values

I wrote this program for my course, but when I run it the output within the OutputData() function just spits out zero.

What makes it output zero when run?









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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
  #include "stdafx.h"
#include <iostream>
#include <cmath>

using namespace std;

// Constants
const double pi = 3.14;

// Global Variables
double radius, circumference, area;

// Prototypes

void Banner();
void ComputeArea(double, double);
int  ComputeCircumference(double);
void GetValue(double);
bool GoAgain();
void OutputData(double, double, double);




int main()
{
	Banner();

	do {
		
		
		GetValue(radius);

		circumference = ComputeCircumference(radius);

		ComputeArea(radius, area);

		OutputData(radius, area, circumference);


	} while (GoAgain());

	return 0;
} // Function main()
  // ==================


  // =================
void Banner() {

	cout << "Welcome to the program!\n";
	cout << "Input a radius of a circle,\n";
	cout << "I will compute the area and\n";
	cout << "circumference of that radius.\n";
	cout << "Let's begin!\n";
} // Function Banner()
  // =========================

  // =====================
void ComputeArea(double, double) {

	area = pow((pi * radius), 2);


} // Function ComputeArea()
  // ==============================

  // =====================================
int ComputeCircumference(double
	circumference) {


	circumference = 2 * pi * radius;

	return circumference;
} // Function ComputeCircumference()
  // ======================================


  // ==========================
void GetValue(double) {

	double radius;

	cout << "Please enter your circles radius: " << endl;
	cin >> radius;


} // Function GetValue()
  // ===========================

  // =========================
bool GoAgain() {

	bool validAnswer;
	char answer;

	do {



		cout << "Enter another radius?\n";
		cout << "[y/Y] to go again. [n/N] to exit: ";
		cin >> answer;

		if ((answer == 'y') || (answer == 'y') ||
			(answer == 'n') || (answer == 'N'))
			validAnswer = true;
		else {
			validAnswer = false;
			cout << "Error. Enter a valid character: ";
		}


	} while (!validAnswer);

	if ((answer == 'y') || (answer == 'Y'))
		return true;
	else if ((answer == 'n') || (answer == 'N'))
		return false;

} // Function GoAgain()

  // ===========================

  // ===========================
void OutputData(double, double, double) {

	cout << "Here are the results: ";
	cout << "You entered: " << radius << " for the radius." << endl;
	cout << "Area: " << area << endl;
	cout << "Circumference: " << circumference << endl;

} // Function OutputData()
  // ============================
Before anything else:
Don't use global variables.


You've already confused yourself in your use of them. Just don't use them, and your future self will thank you.

1
2
3
4
5
6
7
8
9
void GetValue(double) {

	double radius;

	cout << "Please enter your circles radius: " << endl;
	cin >> radius;


}

What are you expecting this function to do? Look at it closely. You are asking the user for a value... okay, but then... you don't do anything with this value. radius is a local value.

I would review a tutorial on how functions work:
http://www.cplusplus.com/doc/tutorial/functions/
https://www.tutorialspoint.com/cplusplus/cpp_functions.htm

To cut to the chase, perhaps you want something like this:

1
2
3
4
5
6
7
8
9
double GetRadiusInput() {

	double radius;

	cout << "Please enter your circles radius: ";
	cin >> radius;

	return radius;
}


Call it like
1
2
3
4
5
int main()
{
	double radius = GetRadiusInput();
	std::cout << radius << std::endl;
}


PS: Since you already check for valid input in your GoAgain() function, I suggest changing your return logic to just
1
2
3
4
	if ((answer == 'y') || (answer == 'Y'))
		return true;
	else
		return false;

or even
 
	return (answer == 'y') || (answer == 'Y');

so that it's obvious that all paths return.
Last edited on
There's a number of errors in variables names.

Try avoiding global variables. Do pass the needed values to your functions.

You can skip argument names in function declarations (prototypes), but you need to add them in function definitions, otherwise you can't use them.

1
2
3
4
5
6
7
8
// I can leave out arguments names in the prototype...
double getDiameter(double);

// ...but I must add them in the definition, or I cannot use them:
double getDiameter(double radius)
{
    return radius * 2; // the compiler must be informed about name 'radius'
}

Last edited on
Topic archived. No new replies allowed.