GeoCalc - Geo Metric Calculator

This is a simple little console application i made that solves the area and volume of 2d and 3d objects.I already added the math.h header if you want to use the sqr(); functions or sin and cos... just add on to the code and post to see how big this project gets :D

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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <iostream>
#include <math.h>



double pi = 3.14159;

void Pause()
{
	char REF;
		std :: cin >> REF;

}

double Box(float width, float height)
{
std :: cout << "________\n";
std :: cout << "|	|\n";
std :: cout << "|	|\n";
std :: cout << "|	|\n";
std :: cout << "|_______|\n";

		return (width * height);
}



double Cube(float length, float width, float height)
{


		std :: cout << ".. //////////////////////|\n";
		std :: cout << "..//////////////////////||\n";
		std :: cout << ".//////////////////////|||\n";
		std :: cout << "|                    |||||\n";
		std :: cout << "|                    |||||\n";
		std :: cout << "|                    |||/\n";
		std :: cout << "|                    ||/\n";
		std :: cout << "|____________________|/ \n";

		return (length * width * height);
}


double circle(float radsqr)
{
	std :: cout << " .........%%%%%%%%%%%%%%..............\n";
    std :: cout << ".......%%%              %%%...........\n";
    std :: cout << ".....                      ...........\n";
    std :: cout << "...%%%                      %%%.......\n";
    std :: cout << ".....                         ........\n";
    std :: cout << "..%%%                         %%%.....\n";
	std :: cout << "....             _______________ .....\n";
    std :: cout << "..%%%                         %%%.....\n";
	std :: cout << "....                             .....\n";
    std :: cout << "..%%%                        %%%......\n";
	std :: cout << ".....                        .........\n";
	std :: cout << ".....%%%                  %%%..........\n";
	std :: cout << "..........                .............\n";
    std :: cout << "...........%%%%%%%%%%%%%%..............\n";




		return ( pi * radsqr);
}
double sphere(float radcubed)
{
	               
std :: cout << "            ,dP9CGG88@b,                       \n";
std :: cout << "          ,IPssYICCG888@@b,                    \n";
std :: cout << "         dIi   ,IICGG8888@b                    \n";
std :: cout << "        dCIIiciIICCGG8888@@b                   \n";
std :: cout << "________GCCIIIICCCGGG8888@@@__________________ \n";
std :: cout << "        GGCCCCCCCGGG88888@@@                   \n";
std :: cout << "        GGGGCCCGGGG88888@@@@...                \n";
std :: cout << "        Y8GGGGGG8888888@@@@P.....              \n";
std :: cout << "         Y88888888888@@@@@P......              \n"; 
std :: cout << "         `Y8888888@@@@@@@P'......              \n";
std :: cout << "            `@@@@@@@@@P'.......                \n";
std :: cout << "                     ........                  \n";
                                  



	return ((4*pi*radcubed)/3);
}






int main()
{
	// if any one knows another method to clear the screen that would be great :)
	
	
	int num;
	// w = width, h = height, l = length.
	double l, w, h;
	// d = diameter, r = radius.
	double r, rad2, rad3;
	double A;
	
	
	
	
Choose:
	system("CLS"); 
	std :: cout << "**** Welcome to GeoCalc ****\n";
	std :: cout << "\n";
	std :: cout << "2D Box(1)\n";
	std :: cout << "Cube(2)\n";
	std :: cout << "Circle(3)\n";
	std :: cout << "sphere(4)\n";
	
	std :: cin >> num;

	
// this solves the area of a 2 dimenitional box
		if (num == 1)
		{
	std :: cout << " Enter the following \n";
	std :: cout << "Width: ";
	std :: cin >> w ;
	
	std :: cout << "Height: ";
	std :: cin >> h ;
	

	A = Box(w,h);
	std :: cout << "The area is: " << A << "\n";
	Pause();
			
		}

				if (num == 2)
		{
	std :: cout << " Enter the following \n";
	std :: cout << "Length: ";
	std :: cin >> l ;

	std :: cout << "Width: ";
	std :: cin >> w ;
	
	std :: cout << "Height: ";
	std :: cin >> h ;
	

	A = Cube(l,w,h);
	std :: cout << "The volume is: " << ((double)A) << "\n";
	Pause();
			
		}

				if (num == 3)
				{
					std :: cout << "What is the Radius of your cirlce: ";
					std :: cin >> r ;
					rad2 = (r * r);
					A = circle(rad2);
					std :: cout << "the area of your circle is: " << A;
					Pause();
				}

			if (num == 4)
			{
				std :: cout << "what is the Radius of your sphere: ";
				std :: cin >> r;
				rad3 = (r*r*r);
				A = sphere(rad3);
				std :: cout << "The volume of your sphere is: " << A;
				Pause();
				
			}








				
			goto Choose;

		Pause();
}
Hi! Just a couple of suggestions:

-int main() should return something at the very end, usually 0

-put using namespace std; after the includes to shorten the tedious std::cout to simply cout

-try to rework the code to avoid dependency on the goto keyword since it's generally very dangerous to use

nice geometric shapes :p
I know about the using namespace i just heard it was bad coding practice and defeats the purpose of creating name spaces. OK i will probably either use a switch statement with the different options and sorry about the return i guess i didn't copy all of the code haha.

is this better i made a math class and i used the pow() function to fine the squared value instead of r = (r*r); also changed the goto to a while function to check for the value of again... and thank you for the comment on the shapes:)


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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
#include <iostream>
#include <math.h>



double pi = 3.14159;

void Pause()
{
	char REF;
		std :: cin >> REF;

}
class Math
{
public:
	Math() {} // construct
	~Math() {}// destruct
double Box(double width, double height)
{
std :: cout << "________\n";
std :: cout << "|	|\n";
std :: cout << "|	|\n";
std :: cout << "|	|\n";
std :: cout << "|_______|\n";

		return (width * height);
}
double Cube(double length, double width, double height)
{


		std :: cout << ".. //////////////////////|\n";
		std :: cout << "..//////////////////////||\n";
		std :: cout << ".//////////////////////|||\n";
		std :: cout << "|                    |||||\n";
		std :: cout << "|                    |||||\n";
		std :: cout << "|                    |||/\n";
		std :: cout << "|                    ||/\n";
		std :: cout << "|____________________|/ \n";

		return (length * width * height);
}
double circle(double radsqr)
{
	std :: cout << " .........%%%%%%%%%%%%%%..............\n";
    std :: cout << ".......%%%              %%%...........\n";
    std :: cout << ".....                      ...........\n";
    std :: cout << "...%%%                      %%%.......\n";
    std :: cout << ".....                         ........\n";
    std :: cout << "..%%%                         %%%.....\n";
	std :: cout << "....             _______________ .....\n";
    std :: cout << "..%%%                         %%%.....\n";
	std :: cout << "....                             .....\n";
    std :: cout << "..%%%                        %%%......\n";
	std :: cout << ".....                        .........\n";
	std :: cout << ".....%%%                  %%%..........\n";
	std :: cout << "..........                .............\n";
    std :: cout << "...........%%%%%%%%%%%%%%..............\n";




		return ( pi * radsqr);
}
double sphere(double radcubed)
{
	               
std :: cout << "            ,dP9CGG88@b,                       \n";
std :: cout << "          ,IPssYICCG888@@b,                    \n";
std :: cout << "         dIi   ,IICGG8888@b                    \n";
std :: cout << "        dCIIiciIICCGG8888@@b                   \n";
std :: cout << "________GCCIIIICCCGGG8888@@@__________________ \n";
std :: cout << "        GGCCCCCCCGGG88888@@@                   \n";
std :: cout << "        GGGGCCCGGGG88888@@@@...                \n";
std :: cout << "        Y8GGGGGG8888888@@@@P.....              \n";
std :: cout << "         Y88888888888@@@@@P......              \n"; 
std :: cout << "         `Y8888888@@@@@@@P'......              \n";
std :: cout << "            `@@@@@@@@@P'.......                \n";
std :: cout << "                     ........                  \n";
                                  



	return ((4*pi*radcubed)/3);
}

double Getwidth() {return width;}
void SetWidth(double x) {width = x;}
double Getheight() {return height;}
void Setheight(double x) {height = x;}
double Getlength() {return length;}
void Setlength(double x) {length = x;}
double Getradsqr() {return length;}
void Setradsqr(double x) {length = x;}
double Getradcubed() {return length;}
void Setradcubed(double x) {length = x;}



private:
	double width;
	double height;
	double length;
	double radsqr;
	double radcubed;

};





int main()
{
	// if any one knows another method to clear the screen that would be great :)
	
	
	int num;
	// w = width, h = height, l = length.
	double l, w, h;
	// d = diameter, r = radius.
	double r, rad2, rad3;
	double A;
	Math math;
	
	char again = 'y';
	
	
while(again == 'y')
{
	system("CLS"); 
	std :: cout << "**** Welcome to GeoCalc ****\n";
	std :: cout << "\n";
	std :: cout << "2D Box(1)\n";
	std :: cout << "Cube(2)\n";
	std :: cout << "Circle(3)\n";
	std :: cout << "sphere(4)\n";
	
	std :: cin >> num;

	
// this solves the area of a 2 dimenitional box
		if (num == 1)
		{
	std :: cout << " Enter the following \n";
	std :: cout << "Width: ";
	std :: cin >> w ;
	
	
	std :: cout << "Height: ";
	std :: cin >> h ;
	math.SetWidth(w);
	math.Setheight(h);
	

	A = math.Box(math.Getwidth(),math.Getheight());
	std :: cout << "The area is: " << A << "\n";
	
			
		}

				if (num == 2)
		{
	std :: cout << " Enter the following \n";
	std :: cout << "Length: ";
	std :: cin >> l ;

	std :: cout << "Width: ";
	std :: cin >> w ;
	
	std :: cout << "Height: ";
	std :: cin >> h ;
	math.Setheight(h);
	math.Setlength(l);
	math.SetWidth(w);
	

	A = math.Cube(math.Getlength(),math.Getwidth(),math.Getheight());
	std :: cout << "The volume is: " << ((double)A) << "\n";
	
			
		}

				if (num == 3)
				{
					std :: cout << "What is the Radius of your cirlce: ";
					std :: cin >> r ;
					rad2 = pow(r,2);
					math.Setradsqr(rad2);
					A = math.circle(math.Getradsqr());
					std :: cout << "the area of your circle is: " << A;
					
				}

			if (num == 4)
			{
				std :: cout << "what is the Radius of your sphere: ";
				std :: cin >> r;
				rad3 = pow(r,3);
				A = math.sphere(math.Getradcubed());
				std :: cout << "The volume of your sphere is: " << A;
				
				
			}


			std :: cout << "\ndo you want to use GeoCalc again(y/n)" << std :: endl;
			std :: cin >> again;

}



				
			

		
		return 0;
}
Last edited on
Good improvements !

Yeah, using namespace std; can be bad practice. The problem is with function names in other libraries colliding with user defined functions. If u created a cout function that includes the << operator then yeah, u'll have a problem...maybe I would have been better to say, "perhaps put this at the top":using std::cout; ---- but ok, I retract my comment.

u could do this since u'r only looking for 1 char...
1
2
3
4
void Pause()
{
   std :: cin.get();
}



The advantage of using library funcs like pow() is that there's usually sufficient error checking in case u try to put in invalid numbers or the result is too big. pow() is also overloaded to accept different types without making a fuss. In ur case u put in pow(double, int).

U might also consider putting the pow() directly in ur 'circle' member function and only pass in the radius that u want to compute. Then have it return the area without needing a function to store the temporary radius (unless u want to use it again later). Same idea for 'sphere'.

Usually the header is just used for declarations. U'd then have a seperate .cpp file that includes all of the definitions for those functions. So for the declaration double Box(double width, double height) in the header it'd be double Math::Box(double width, double height){/*...code*/} in the .cpp


Last edited on
Topic archived. No new replies allowed.