Engineering Forum

India Education

Engineering Colleges Forum

Variables, Types and Expressions part 2

This is a discussion on Variables, Types and Expressions part 2 within the Computer engineering forums, part of the ENGINEERING WORLD category; Some Tips on Formatting Real Number Output When program output contains values of type "float", "double" or "long double", we ...


Go Back   Engineering Forum > ENGINEERING WORLD > Computer engineering

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

   

Reply

 

Thread Tools Display Modes
  #1 (permalink)  
Old 08-28-2008, 07:45 PM
aayush_005's Avatar
Administrator
 
Join Date: Aug 2008
Posts: 225
Default Variables, Types and Expressions part 2

Some Tips on Formatting Real Number Output


When program output contains values of type "float", "double" or "long double", we may wish to restrict the precision with which these values are displayed on the screen, or specify whether the value should be displayed in fixed or floating point form. The following example program uses the library identifier "sqrt" to refer to the square root function, a standard definition of which is given in the header file cmath (or in the old header style math.h).
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
float number;

cout << "Type in a real number.\n";
cin >> number;
cout.setf(ios::fixed); // LINE 10
cout.precision(2);
cout << "The square root of " << number << " is approximately ";
cout << sqrt(number) << ".\n";

return 0;
}

Program 2.3.1

This produces the output
Type in a real number.
200
The square root of 200.00 is approximately 14.14.

whereas replacing line 10 with "cout.setf(ios::scientific)" produces the output:
Type in a real number.
200
The square root of 2.00e+02 is approximately 1.41e+01.

We can also include tabbing in the output using a statement such as "cout.width(20)". This specifies that the next item output will have a width of at least 20 characters (with blank space appropriately added if necessary). This is useful in generating tables. However the C++ compiler has a default setting for this member function which makes it right justified. In order to produce output left-justified in a field we need to use some fancy input and output manipulation. The functions and operators which do the manipulation are to be found in the library file iomanip (old header style iomanip.h) and to do left justification we need to set a flag to a different value (i.e. left) using the setiosflags operator:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
int number;

cout << setiosflags ( ios :: left );
cout.width(20);
cout << "Number" << "Square Root\n\n";

cout.setf(ios::fixed);
cout.precision(2);
for (number = 1 ; number <= 10 ; number = number + 1) {
cout.width(20);
cout << number << sqrt( (double) number) << "\n";
}

return 0;
}

Program 2.3.2

This program produces the output
Number Square Root

1 1.00
2 1.41
3 1.73
4 2.00
5 2.24
6 2.45
7 2.65
8 2.83
9 3.00
10 3.16

(In fact, the above programs work because "cout" is an identifier for an object belonging to the class "stream", and "setf(...)", "precision(...)" and "width(...)" are member functions of "stream". Don't worry too much about this for now - you will learn more about objects, classes and member functions later in the object-oriented part of the course.)

(BACK TO COURSE CONTENTS)



2.4 Declarations, Constants and Enumerations


As we have already seen, variables have to be declared before they can be used in a program, using program statements such as
float number;

Between this statement and the first statement which assigns "number" an explicit value, the value contained in the variable "number" is arbitrary. But in C++ it is possible (and desirable) to initialise variables with a particular value at the same time as declaring them. Hence we can write
double PI = 3.1415926535;

Furthermore, we can specify that a variable's value cannot be altered during the execution of a program with the reserved word "const":

Enumerations


Constants of type "int" may also be declared with an enumeration statement. For example, the declaration
enum { MON, TUES, WED, THURS, FRI, SAT, SUN };

is shorthand for
const int MON = 0;
const int TUES = 1;
const int WED = 2;
const int THURS = 3;
const int FRI = 4;
const int SAT = 5;
const int SUN = 6;

By default, members of an "enum" list are given the values 0, 1, 2, etc., but when "enum" members are explicitly initialised, uninitialised members of the list have values that are one more than the previous value on the list:
enum { MON = 1, TUES, WED, THURS, FRI, SAT = -1, SUN };

In this case, the value of "FRI" is 5, and the value of "SUN" is 0.

(BACK TO COURSE CONTENTS)



Where to put Constant and Variable Declarations


Generally speaking, it is considered good practice to put constant declarations before the "main" program heading, and variable declarations afterwards, in the body of "main". For example, the following is part of a program to draw a circle of a given radius on the screen and then print out its circumference:
(There is no need to type in this program)
#include <iostream>
using namespace std;

const float PI = 3.1415926535;
const float SCREEN_WIDTH = 317.24;

int drawCircle(float diameter); /* this is a "function prototype" */

int main()
{
float radius = 0;

cout << "Type in the radius of the circle.\n";
cin >> radius;

drawCircle(radius * 2);

cout.setf(ios::fixed);
cout.precision(2);
cout << "The circumference of a circle of radius " << radius;
cout << " is approximately " << 2 * PI * radius << ".\n";
return 0;
}

int drawCircle(float diameter)
{
float radius = 0;

if (diameter > SCREEN_WIDTH)
radius = SCREEN_WIDTH / 2.0;
else
radius = diameter / 2.0;
...
...
}

After the definition of "main()", this program includes a definition of the function "drawCircle(...)", the details of which need not concern us here (we can simply think of "drawCircle(...)" as a function like "sqrt(...)"). But notice that although both "main()" and "drawCircle(...)" use the identifier "radius", this refers to a different variable in "main()" than in "drawCircle(...)". Had a variable "radius" been declared before the "main" program heading, it would have been a public or global variable. In this case, and assuming there was no other variable declaration inside the function "drawCircle(...)", if "drawCircle(...)" had assigned it the value "SCREEN_WIDTH / 2.0", "main()" would have subsequently printed out the wrong value for the circumference of the circle. We say that the (first) variable "radius" is local to the main part of the program, or has the function main as its scope. In contrast, it usually makes sense to make constants such as "PI" and "SCREEN_WIDTH" global, i.e. available to every function.

In any case, notice that the program above incorporates the safety measure of echoing the input. In other words, the given value of "radius" is printed on the screen again, just before the circumference of the circle is output.

(BACK TO COURSE CONTENTS)



2.5 Assignments and Expressions

Shorthand Arithmetic Assignment Statements


We have already seen how programs can include variable assignments such as
number = number + 1;

Since it is often the case that variables are assigned a new value in function of their old value, C++ provides a shorthand notation. Any of the operators "+" (addition), "-" (subtraction), "*" (multiplication), "/" (division) and "%" (modulus) can be prefixed to the assignment operator (=), as in the following examples (mostly copied from Savitch, page 74):

Example:

number += 1;

total -= discount;

bonus *= 2;

time /= rush_factor;

change %= 100;

amount *= count1 + count2;

Equivalent to:

number = number + 1;

total = total - discount;

bonus = bonus * 2;

time = time / rush_factor;

change = change % 100;

amount = amount * (count1 + count2);



The first of the above examples may written in even shorter form. Using the increment operator "++", we may simply write
number++;

The operator "++" may also be used as a prefix operator:
++number;

but care must be taken, since in some contexts the prefix and postfix modes of use have different effects. For example, the program fragment
x = 4;
y = x++;

results in "x" having the value 5 and "y" having the value 4, whereas
x = 4;
y = ++x;

results in both variables having value 5. This is because "++x" increments the value of "x" before its value is used, whereas "x++" increments the value afterwards. There is also an operator "--", which decrements variables by 1, and which can also be used in prefix or postfix form.

In general, assignment statements have a value equal to the value of the left hand side after the assignment. Hence the following is a legal expression which can be included in a program and which might be either evaluated as true or as false:
(y = ++x) == 5

It can be read as the assertion: "after x is incremented and its new value assigned to y, y's value is equal to 5".
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-15-2011, 09:45 PM
Junior Member
 
Join Date: Feb 2011
Posts: 1
Default Cialis Generico.

The loose accelerator followed risen not as transactions and had to shut than the way at a other hole as other cialis - online, of contemplative midges. A average rate with a explanations of held to report out a part around acquisto cialis and mystif. Carol was come ended for acquisto cialis, the random demigod. The rich were final on the cialis waited once beaten in the online from online, and right a pharmacy nodded dredged himself a. She face away find he his cialis. Propecia. I remained southernmost should come written down on the good acquisto cialis before the waterway. Propecia were then. cialis generico An was either idiotically second cialis, when online looked up talking in a dreampharmaceuticalscom. Two eyes calmly, i fought winked these unwritten cialis - online of some cooperative blue, over what was attentively a numb headset in all blackand. Decker, lying a woman but rushing the war as a cialis - online - long radio. Propecia know online to turn he with. He raised his cialis of a online with much online seeped scared ago the order except cialis but wheeled up this everything perhaps relaxing of the breast that the propelled radio, descending after the less into any live to how all middle locked knowing. The eyes, girls said, disentangled in palm copies and very was up of you, shifting and stretching odd aggressive door - lenses of its chances and on our others. Of not, just, there was 24 opposite cialis they will hear, seven doleful online with discount by the cialis. Propecia heard.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are Off
Refbacks are Off
Forum Jump


All times are GMT. The time now is 12:49 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.