Velocity Reviews > C++ > a "temp conversion" programme

# a "temp conversion" programme

arnuld
Guest
Posts: n/a

 03-05-2007
i have created a new temperature conversion programme. it converts a
temperature from Fahrenheit to Celsius or from Celsius to Fahrenheit
at user's will. tell em if i need some improvements:

// conversion of temperature

#include <iostream>

int main() {
double centi;
double fahr;
char ans;

std::cout << "do you want to convert a Centigrade into Fahrenheit:
[y/n]";
std::cin >> ans;

if(ans == 'y')
{
std::cout << "Enter temperature in Centigrade: ";
std::cin >> centi;

fahr = (9.0/5.0 * centi) + 32;
std::cout << centi
<< fahr
<< " fahrenheit"
<< "\n";
}

else
{
std::cout << "Enter temperature in Fahrenheit: ";
std::cin >> fahr;

centi = 5.0/9.0 * (fahr - 32);
std::cout << fahr
<< " farenheit = "
<< centi
<< "\n";
}

return 0;
}

-- arnuld
http://arnuld.blogspot.com

Jacek Dziedzic
Guest
Posts: n/a

 03-05-2007
arnuld wrote:
> i have created a new temperature conversion programme. it converts a
> temperature from Fahrenheit to Celsius or from Celsius to Fahrenheit
> at user's will. tell em if i need some improvements:
>
> // conversion of temperature
> // using Centigrade and Fahrenheit
>
> #include <iostream>
>
> int main() {
> double centi;
> double fahr;
> char ans;
>
> std::cout << "do you want to convert a Centigrade into Fahrenheit:
> [y/n]";
> std::cin >> ans;
>
> if(ans == 'y')
> {
> std::cout << "Enter temperature in Centigrade: ";
> std::cin >> centi;
>
> fahr = (9.0/5.0 * centi) + 32;
> std::cout << centi
> << " centigrade = "
> << fahr
> << " fahrenheit"
> << "\n";
> }
>
> else
> {
> std::cout << "Enter temperature in Fahrenheit: ";
> std::cin >> fahr;
>
> centi = 5.0/9.0 * (fahr - 32);
> std::cout << fahr
> << " farenheit = "
> << centi
> << "\n";
> }
>
> return 0;
> }

Well, you could format your output better...
How about rounding to two digits after the decimal point?
That way you wouldn't get values like "3.3333333333333"

If you are interested in achieving this, #include
the file 'iomanip' and look up on the manipulators
'fixed' and 'setprecision'.

HTH,
- J.

arnuld
Guest
Posts: n/a

 03-05-2007
> On Mar 5, 10:25 am, Jacek Dziedzic <(E-Mail Removed)> wrote:

> Well, you could format your output better...
> How about rounding to two digits after the decimal point?
> That way you wouldn't get values like "3.3333333333333"
>
> If you are interested in achieving this, #include
> the file 'iomanip' and look up on the manipulators
> 'fixed' and 'setprecision'.

they are for "floats". i have tried that, you can not use them for
"doubles"

Jacek Dziedzic
Guest
Posts: n/a

 03-05-2007
arnuld wrote:

>> On Mar 5, 10:25 am, Jacek Dziedzic <(E-Mail Removed)>
>> wrote:

>
>> Well, you could format your output better...
>> How about rounding to two digits after the decimal point?
>> That way you wouldn't get values like "3.3333333333333"
>>
>> If you are interested in achieving this, #include
>> the file 'iomanip' and look up on the manipulators
>> 'fixed' and 'setprecision'.

>
> they are for "floats". i have tried that, you can not use them for
> "doubles"

Try harder.

#include<iostream>
#include<iomanip>

using namespace std;

const double d=1.0/3.0;

int main() {
cout << fixed << setprecision(2) << d << ' '
<< setprecision(10) << d << endl;
}

HTH,
- J.

=?iso-8859-1?q?Erik_Wikstr=F6m?=
Guest
Posts: n/a

 03-05-2007
On Mar 5, 7:35 am, "arnuld" <(E-Mail Removed)> wrote:
> > On Mar 5, 10:25 am, Jacek Dziedzic <(E-Mail Removed)> wrote:
> > Well, you could format your output better...
> > How about rounding to two digits after the decimal point?
> > That way you wouldn't get values like "3.3333333333333"

>
> > If you are interested in achieving this, #include
> > the file 'iomanip' and look up on the manipulators
> > 'fixed' and 'setprecision'.

>
> they are for "floats". i have tried that, you can not use them for
> "doubles"

They should work for doubles too.

--
Erik Wikström

arnuld
Guest
Posts: n/a

 03-05-2007
> On Mar 5, 12:06 pm, Jacek Dziedzic <(E-Mail Removed)>

> Try harder.
>
> #include<iostream>
> #include<iomanip>
>
> using namespace std;
>
> const double d=1.0/3.0;
>
> int main() {
> cout << fixed << setprecision(2) << d << ' '
> << setprecision(10) << d << endl;
>
> }

Erm... and i was using "d.precision(3)".

BTW, i removed "fixed" from your code. i does not make any difference.

Jacek Dziedzic
Guest
Posts: n/a

 03-05-2007
arnuld wrote:
>> On Mar 5, 12:06 pm, Jacek Dziedzic
>> <(E-Mail Removed)>

>
>> Try harder.
>>
>> #include<iostream>
>> #include<iomanip>
>>
>> using namespace std;
>>
>> const double d=1.0/3.0;
>>
>> int main() {
>> cout << fixed << setprecision(2) << d << ' '
>> << setprecision(10) << d << endl;
>>
>> }

>
>
> Erm... and i was using "d.precision(3)".
>
> BTW, i removed "fixed" from your code. i does not make any difference.

Sure it does, you just didn't notice. I'll let you figure it out,
though. Try this

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
cout << setprecision(3) << 123.456 << ' ' << fixed
<< setprecision(3) << 123.456 << endl;
}

- J.

arnuld
Guest
Posts: n/a

 03-05-2007
> On Mar 5, 2:09 pm, Jacek Dziedzic <(E-Mail Removed)>

> > BTW, i removed "fixed" from your code. i does not make any difference.

>
> Sure it does, you just didn't notice. I'll let you figure it out,
> though. Try this
>
> #include <iostream>
> #include <iomanip>
>
> using namespace std;
>
> int main() {
> cout << setprecision(3) << 123.456 << ' ' << fixed
> << setprecision(3) << 123.456 << endl;
>
> }

yes, i noticed now. the output of your programme is: 123 123.456

now here is some interesting pattern:

1.)
<< setprecision(3) << 123.456
<< fixed
<< ' '
<< setprecision(3) << 123.456

OUTPUT: 123 123.456

here i have use /fixed/ as like a prefix

2.)
<< fixed
<< setprecision(3) << 123.456
<< ' '
<< setprecision(3) << 123.456
<< endl;

OUTPUT: 123.456 123.456

here 1 /fixed/ worked for both.

3.)
<< setprecision(3) << 123.456
<< ' '
<< setprecision(3) << 123.456
<< fixed
<< endl;

}

OUTPUT: 123 123

/fixed/ doe snot work here.

i want to know how exactly /fixed/ work, in context to patterns 1,2
and 3.

?

Jacek Dziedzic
Guest
Posts: n/a

 03-05-2007
arnuld wrote:

>> On Mar 5, 2:09 pm, Jacek Dziedzic
>> <(E-Mail Removed)>

>
>> > BTW, i removed "fixed" from your code. i does not make any difference.

>>
>> Sure it does, you just didn't notice. I'll let you figure it out,
>> though. Try this
>>
>> #include <iostream>
>> #include <iomanip>
>>
>> using namespace std;
>>
>> int main() {
>> cout << setprecision(3) << 123.456 << ' ' << fixed
>> << setprecision(3) << 123.456 << endl;
>>
>> }

>
> yes, i noticed now. the output of your programme is: 123 123.456
>
> now here is some interesting pattern:
>
> 1.)
> << setprecision(3) << 123.456
> << fixed
> << ' '
> << setprecision(3) << 123.456
>
>
> OUTPUT: 123 123.456
>
> here i have use /fixed/ as like a prefix
>
> 2.)
> << fixed
> << setprecision(3) << 123.456
> << ' '
> << setprecision(3) << 123.456
> << endl;
>
> OUTPUT: 123.456 123.456
>
> here 1 /fixed/ worked for both.
>
>
> 3.)
> << setprecision(3) << 123.456
> << ' '
> << setprecision(3) << 123.456
> << fixed
> << endl;
>
> }
>
> OUTPUT: 123 123
>
> /fixed/ doe snot work here.
>
>
> i want to know how exactly /fixed/ work, in context to patterns 1,2
> and 3.

One way would be to google for "fixed", "setprecision" and "manipulators".

Consulting your favourite C++ textbook would be another.

Anyway, fixed did not work in your last example, since it was
no chance to act.

Anyway 2, with 'fixed' the 'setprecision' manipulator tells the
stream how many digits after the decimal point you want to output,
without fixed it tells how many digits _total_ you want to output.

HTH,
- J.

arnuld
Guest
Posts: n/a

 03-05-2007
> On Mar 5, 4:06 pm, Jacek Dziedzic <(E-Mail Removed)>

> One way would be to google for "fixed", "setprecision" and "manipulators".

i found one more manipulator named /scientific/ an opposite of /
fixed/

> Consulting your favourite C++ textbook would be another.

yes, i tried Stroustrup before posting here my 3 patterns but it did
not tell me anything useful, totally unlike Google.

> Anyway, fixed did not work in your last example, since it was
> no chance to act.
>
> Anyway 2, with 'fixed' the 'setprecision' manipulator tells the
> stream how many digits after the decimal point you want to output,
> without fixed it tells how many digits _total_ you want to output.

yes, i understood now, except one thing. from pattern '2' above, does
one /fixed/ works for all subsequent /setprecision(s)/

?

> HTH,

of course that helped