1 Attachment(s)
Re: Area and volume of cylinder
Thank you i did with your helps.
I tested to the program when user input second choice with integer there is no problem.
But in the second choice when user input for example 3.75 it is calculate volume too,
How i can handle it.
Thank you.Attachment 31457
Re: Area and volume of cylinder
In main, r and h are defined as integers. cin >> r tries to get an integer and reads 3. cin >> h tries to read another integer but finds . which isn't a digit so the cin fails. Hence h hasn't been changed by the cin. As r and h haven't been previously initialised, h contains whatever happens to be in the memory location used for h. Hence the weid result.
You should check that cin has succeeded after it's used and if it has failed, output an error message. Also r and h should be initialised (usually to 0) when they are defined.
This leads on from my question in post #50 about how are you going to allow the user to input of either int, float or double?
Re: Area and volume of cylinder
Code:
cout<<"\nEnter radius of Cylinder\n";
cin>>r;
cout<<"\nEnter height of Cylinder\n";
cin>>h;
switch(ch)
{
case 1:
obj.cylinder_area(r,h);
break;
case 2:
obj.cylinder_volume(r,h);
break;
default:
cout<<"\nThe choice entered is a wrong choice";
}
GCDEF when i did with your style i am getting error should i enter other object parameters.
Re: Area and volume of cylinder
Should i use if else for example if(r==float){
}
and which part of the codes i have to check.
Re: Area and volume of cylinder
Quote:
Originally Posted by
melissax
Should i use if else for example if(r==float){
}
and which part of the codes i have to check.
:cry: No, you cannot do this. r is defined as type integer. You cannot do comparisons against type.
Again, you are guessing without understanding what you are doing. You cannot guess with c++ - you must know and understand the basics before progressing.
Re: Area and volume of cylinder
Quote:
Originally Posted by
melissax
GCDEF when i did with your style i am getting error should i enter other object parameters.
What error are you getting? I tried it and it works for me.
Re: Area and volume of cylinder
Quote:
Originally Posted by
melissax
Code:
cout<<"\nEnter radius of Cylinder\n";
cin>>r;
cout<<"\nEnter height of Cylinder\n";
cin>>h;
switch(ch)
{
case 1:
obj.cylinder_area(r,h);
break;
case 2:
obj.cylinder_volume(r,h);
break;
default:
cout<<"\nThe choice entered is a wrong choice";
}
GCDEF when i did with your style i am getting error should i enter other object parameters.
Can you show the code please
1 Attachment(s)
Re: Area and volume of cylinder
Code:
#include<iostream>
#include<conio.h>
using namespace std;
const float PI=3.14;
class calculate
{
public:
void cylinder_area(int r,int h);
void cylinder_area(float r1,float h1);
void cylinder_area(double r2, double h2);
void cylinder_volume(int r3,int h3);
void cylinder_volume(float r4,float h4);
void cylinder_volume(double r5, double h5);
};
void calculate::cylinder_area(int r, int h)
{
cout<<"\n Area of Cylinder: "<<(2 * PI * r)*( r + h);
}
void calculate::cylinder_area(float r1, float h1)
{
cout<<"\nArea of Cylinder "<<(2 * PI * r1)*( r1 + h1);
}
void calculate::cylinder_area(double r2, double h2)
{
cout<<"\nArea of Cylinder "<<(2 * PI * r2)*( r2 + h2);
}
void calculate::cylinder_volume(int r3, int h3)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r3 * h3);
}
void calculate::cylinder_volume(float r4, float h4)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r4 * h4);
}
void calculate::cylinder_volume(double r5, double h5)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r5 * h5);
}
int main()
{
int ch;
int r,h,r3,h3;
float r1,h1,r4,h4;
double r2,h2,r5,h5;
calculate obj;
cout<<"\tTHIS PROGRAM CALCULATES AREA AND VOLUME OF CYLINDER\n";
cout<<"\n1. Area of Cylinder\n";
cout<<"\n2. Volume of Cylinder\n";
cout<<"\n\tPlease select\n";
cin>>ch;
switch(ch)
{ case 1:
obj.cylinder_area(r,h);
break;
case 2:
obj.cylinder_volume(r,h);
break;
default:
cout<<"\nThe choice entered is a wrong choice";
}
getch();
}
Program starts when i select option 2 calculating direct volume before sould ask height.
Attachment 31459
Re: Area and volume of cylinder
I know we cant compare number types you are right. Accidentaly i wrote it.
Re: Area and volume of cylinder
Quote:
Originally Posted by
melissax
Program starts when i select option 2 calculating direct volume before sould ask height.
So where is the code to ask the user to input radius and height? :mad: Where is
Code:
cout<<"\nEnter radius of Cylinder\n";
cin>>r;
cout<<"\nEnter height of Cylinder\n";
cin>>h;
2 Attachment(s)
Re: Area and volume of cylinder
Attachment 31463
When i select option 1 there is no problem but when i enter double program sending volume value.
Attachment 31465
Which part i have to make changes.
Code:
cout<<"\nEnter radius of Cylinder\n";
cin>>r;
cout<<"\nEnter height of Cylinder\n";
cin>>h;
switch(ch)
{
case 1:
obj.cylinder_area(r,h);
break;
case 2:
obj.cylinder_volume(r,h);
break;
default:
cout<<"\nThe choice entered is a wrong choice";
}
This isnt work in my program.
Re: Area and volume of cylinder
You are probably reading into int variables.
Consider the following:
Code:
int r , h;
cin >> r;
cin >> h;
Reading into an int variable stops when
1) a whitespace is encountered (space, tab, return)
2) end-of-file
3) a character that is invalid for a int variable is encountered
So, if you enter 3.45 into an int variable (r), the variable gets a value of 3 ...
Since the "." is an invalid character for an int. The internal read buffer still
has the characters ".45" (without the quotes).
Next, the program executes cin >> h;
The buffer still has ".45" in it, so the code tries to read that into
the int variable (h). This results in an immediate error (since the "." is
invalid). The read fails ... so:
1) The value of the variable h is undefined.
2) Any read using cin will fail after this, until its state is reset:
However, that just resets the streams internal flags, the ".45" is still
in the buffer. Normally, you could use the ignore() function.
Re: Area and volume of cylinder
This follows from my question in post #50. How are you going to have the user input int, float or double? How are you going to test your various class overloaded functions? You can't input a float/double number into a variable defined as int - although from post #8 you can input an int into a float or double and a float into a double.
Re: Area and volume of cylinder
I tried cin>>clear(); after cin>>r; cin>>h but it gives error.
clear undecleared for first use of function.
then i insert #include<stdio.h> library.
How can i handle.
Thank you.
Re: Area and volume of cylinder
You're probably looking to write:
which is what Philip Nicoletti wrote in post #62.
1 Attachment(s)
Re: Area and volume of cylinder
laserlight thank you,
I used as philip said but stil jumping to the volume result
Code:
#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
const float PI=3.14;
class calculate
{
public:
void cylinder_area(int r,int h);
void cylinder_area(float r1,float h1);
void cylinder_area(double r2, double h2);
void cylinder_volume(int r3,int h3);
void cylinder_volume(float r4,float h4);
void cylinder_volume(double r5, double h5);
};
void calculate::cylinder_area(int r, int h)
{
cout<<"\n Area of Cylinder: "<<(2 * PI * r)*( r + h);
}
void calculate::cylinder_area(float r1, float h1)
{
cout<<"\nArea of Cylinder "<<(2 * PI * r1)*( r1 + h1);
}
void calculate::cylinder_area(double r2, double h2)
{
cout<<"\nArea of Cylinder "<<(2 * PI * r2)*( r2 + h2);
}
void calculate::cylinder_volume(int r3, int h3)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r3 * h3);
}
void calculate::cylinder_volume(float r4, float h4)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r4 * h4);
}
void calculate::cylinder_volume(double r5, double h5)
{
cout<<"\nVolume of Cylinder "<<(2 * PI * r5 * h5);
}
int main()
{
int ch;
int r,h,r3,h3;
float r1,h1,r4,h4;
double r2,h2,r5,h5;
calculate obj;
cout<<"\tTHIS PROGRAM CALCULATES AREA AND VOLUME OF CYLINDER\n";
cout<<"\n1. Area of Cylinder\n";
cout<<"\n2. Volume of Cylinder\n";
cout<<"\n\tPlease select\n";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\nEnter radius of Cylinder\n";
cin>>r;
cin.clear();
cout<<"\nEnter height of Cylinder\n";
cin>>h;
cin.clear();
obj.cylinder_area(r,h);
break;
case 2:
cout<<"\nEnter radius of Cylinder:\n";
cin>>r3;
cin.clear();
cout<<"\nEnter height of Cylinder:\n";
cin>>h3;
cin.clear();
obj.cylinder_volume(r3,h3);
break;
default:
cout<<"\nThe choice entered is a wrong choice";
}
getch();
}
Attachment 31467
Re: Area and volume of cylinder
You might want to re-read post #62, especially the very last part.
By the way, I really don't think that your member functions should be printing anything. Design them to return the result instead. This will make them more reusable, and possibly more testable too.
Re: Area and volume of cylinder
Quote:
Originally Posted by
laserlight
You might want to re-read post #62, especially the very last part.
Yes, but the current issue with this homework assignment is that the program needs to be able to input r and h and call the overloaded class functions with either int, float or double arguments. So the program needs to to able to input real numbers (float or double) as well as ints.