Temperature Conversion Program - Still a Rookie

Discussion in 'C++' started by AsheeG87@msn.com, Mar 31, 2007.

  1. Guest

    Hey Everyone~
    I'm still a C++ Rookie so please bear with me on this.
    I'm doing a temperature conversion program with prototype functions.
    Basicly, I was wondering if some of you would take a look at my code
    and critique it for me. I'm mostly concerned with how prototype
    functions work and if I designed them correctly in my code.
    Your participation would be greatly appreciated!

    My Code:

    #include "stdafx.h"
    #include <iostream>
    #include <cstdlib>

    double FahrenheittoCelsius(double)= 0.0; //Function Prototype
    double CelsiustoFahrenheit(double)= 0.0;

    int _tmain(int argc, _TCHAR* argv[])
    {
    double tempFahrenheit, tempCelsius;
    double temp;
    char f;
    char c;


    cout << " Enter the Temperature: "; //Prompt user to enter temp
    cin >> temp;
    cout << " Fahrenheit or Celsius?"; // If user does not specify f or c
    ask them
    if (temp == f)
    {
    c = FahrenheittoCelsius;
    cout << f " degrees Fahrenheit is" c " degrees celsius ";
    cout << " Continue? ";

    else
    f = CelsiustoFahrenheit;
    cout << c " degrees Celsius is " f " degrees Fahrenheit ";
    cout << " Continue? ";

    }


    return temp;
    }
    double FahrenheitoCelsius (double f)
    {
    return (f - 32) * (5.0/9);
    }
    double CelsiustoFahrenheit (double c)
    {
    return (9/5.0 * c) + 32;
    }
    , Mar 31, 2007
    #1
    1. Advertising

  2. Ian Collins Guest

    wrote:
    > Hey Everyone~
    > I'm still a C++ Rookie so please bear with me on this.
    > I'm doing a temperature conversion program with prototype functions.
    > Basicly, I was wondering if some of you would take a look at my code
    > and critique it for me. I'm mostly concerned with how prototype
    > functions work and if I designed them correctly in my code.
    > Your participation would be greatly appreciated!
    >
    > My Code:
    >

    I assume you haven't tried to compile this!

    Some hints:

    > #include "stdafx.h"


    Non-standard header.

    > #include <iostream>
    > #include <cstdlib>
    >
    > double FahrenheittoCelsius(double)= 0.0; //Function Prototype
    > double CelsiustoFahrenheit(double)= 0.0;
    >

    These are syntax errors, not prototypes. Loose the = 0.0.

    > int _tmain(int argc, _TCHAR* argv[])


    That's _TCHAR? Use

    int main( int argc, char* argv[] )


    > {
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char f;
    > char c;
    >
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;
    > cout << " Fahrenheit or Celsius?"; // If user does not specify f or c
    > ask them
    > if (temp == f)


    Where is f assigned?

    > {
    > c = FahrenheittoCelsius;


    Here you attempt to assign a function to a char, which is a very strange
    thing to do! Did you mean to write

    c = FahrenheittoCelsius( temp );

    > cout << f " degrees Fahrenheit is" c " degrees celsius ";
    > cout << " Continue? ";
    >

    missing }
    > else


    missing {
    > f = CelsiustoFahrenheit;
    > cout << c " degrees Celsius is " f " degrees Fahrenheit ";
    > cout << " Continue? ";
    >
    > }
    >
    >
    > return temp;
    > }
    > double FahrenheitoCelsius (double f)
    > {
    > return (f - 32) * (5.0/9);
    > }
    > double CelsiustoFahrenheit (double c)
    > {
    > return (9/5.0 * c) + 32;
    > }
    >



    --
    Ian Collins.
    Ian Collins, Mar 31, 2007
    #2
    1. Advertising

  3. Jim Langston Guest

    <> wrote in message
    news:...
    > Hey Everyone~
    > I'm still a C++ Rookie so please bear with me on this.
    > I'm doing a temperature conversion program with prototype functions.
    > Basicly, I was wondering if some of you would take a look at my code
    > and critique it for me. I'm mostly concerned with how prototype
    > functions work and if I designed them correctly in my code.
    > Your participation would be greatly appreciated!
    >
    > My Code:
    >
    > #include "stdafx.h"
    > #include <iostream>
    > #include <cstdlib>
    >
    > double FahrenheittoCelsius(double)= 0.0; //Function Prototype


    This is not a pure virtual method. It is a function prototype. It should
    look like this:
    double FarenheitToCelcius(double);

    > double CelsiustoFahrenheit(double)= 0.0;


    double CelciusToFarenheit(double);

    > int _tmain(int argc, _TCHAR* argv[])


    This is non standard, becuase you did a windows project and are using
    standard headers. That is frowned upon in this newsgroup.

    project->properties->c/C++->Precompiled Headers
    Change Create/Use Precompiled Header to Not Using Precompiled Header.
    Then remove stdafx.cpp from your project. Change your main to:
    int main()

    > {
    > double tempFahrenheit, tempCelsius;

    Better to call these Farenheit and Celcius so you don't confuse yourself.

    double Farenheit, Celcious;

    > double temp;


    > char f;
    > char c;


    These are not the characters 'f' and 'c' but variables of type char that are
    called f and c. You can get rid of these.

    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;
    > cout << " Fahrenheit or Celsius?"; // If user does not specify f or c
    > ask them
    > if (temp == f)


    You are asking if temp == f. temp is a double. f is a char. I think you
    actually wanted to ask the user but forgot to do it.

    char torf;
    cin >> torf;

    if ( torf == 'f' )

    > {
    > c = FahrenheittoCelsius;


    You need to call a function there. Your prototype is:
    double FarenheitToCelcius(double);
    so it would be:

    Celcius = FarenheitToCelcius( temp );

    > cout << f " degrees Fahrenheit is" c " degrees celsius ";

    That ain't going to work. It should be:
    cout << Farenheit << " degrees Fahrenheit is" << Celcius << " degrees
    celsius ";

    > cout << " Continue? ";
    >
    > else
    > f = CelsiustoFahrenheit;
    > cout << c " degrees Celsius is " f " degrees Fahrenheit ";


    See comments for converting from FarenheitToCelcius and fix this to reflect.

    > cout << " Continue? ";
    >
    > }
    >
    >
    > return temp;
    > }
    > double FahrenheitoCelsius (double f)
    > {
    > return (f - 32) * (5.0/9);
    > }
    > double CelsiustoFahrenheit (double c)
    > {
    > return (9/5.0 * c) + 32;
    > }


    Okay, try all tis, then actually try to compile it. You'll get compilation
    errors variables not found, etc.. Fix the errors. If you still get stuck
    post again with your new fixed code.
    Jim Langston, Apr 1, 2007
    #3
  4. Guest

    You are a lot of help! And...I feel dumb about some of the mistakes
    that I made. I have no clue where I came up with that. But, I'm still
    learning. So, here we go. I am having a problem debugging. It won't
    execute the program. So, I can build and see the errors that come up
    but it won't execute. What am I missing?

    Here is my *NEW* code:

    // Temperature.cpp : Defines the entry point for the console
    application.
    //
    #include "stdafx.h"
    #include <iostream>
    #include <cstdlib>
    using namespace std;

    double FahrenheittoCelsius(double); //Function Prototype
    double CelsiustoFahrenheit(double);

    int main()
    {
    double tempFahrenheit, tempCelsius;
    double temp;
    char corf;


    cout << " Enter the Temperature: "; //Prompt user to enter temp
    cin >> corf;

    if (corf == 'f')
    {
    tempCelsius = FahrenheittoCelsius( temp );
    cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    << " degrees celsius ";
    cout << " Continue? ";
    if
    tempFahrenheit = CelsiustoFahrenheit(temp);
    cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    degrees Fahrenheit";
    cout << " Continue? ";
    }

    return 0;
    }
    double FahrenheittoCelsius (double f)
    {
    return (f - 32) * (5.0/9);
    }
    double CelsiustoFahrenheit (double c)
    {
    return (9/5.0 * c) + 32;
    }
    , Apr 1, 2007
    #4
  5. Ian Collins Guest

    wrote:
    > You are a lot of help! And...I feel dumb about some of the mistakes
    > that I made. I have no clue where I came up with that. But, I'm still
    > learning. So, here we go. I am having a problem debugging. It won't
    > execute the program. So, I can build and see the errors that come up
    > but it won't execute. What am I missing?
    >
    > Here is my *NEW* code:
    >

    Which *still* shouldn't compile!

    > // Temperature.cpp : Defines the entry point for the console
    > application.
    > //
    > #include "stdafx.h"


    Loose this.

    > #include <iostream>
    > #include <cstdlib>
    > using namespace std;
    >
    > double FahrenheittoCelsius(double); //Function Prototype
    > double CelsiustoFahrenheit(double);
    >
    > int main()
    > {
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char corf;
    >
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> corf;
    >
    > if (corf == 'f')
    > {
    > tempCelsius = FahrenheittoCelsius( temp );
    > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > << " degrees celsius ";
    > cout << " Continue? ";


    missing }
    > if


    missing condition and {

    --
    Ian Collins.
    Ian Collins, Apr 1, 2007
    #5
  6. ajk Guest

    On 31 Mar 2007 14:22:44 -0700, wrote:

    >#include "stdafx.h"
    >#include <iostream>
    >#include <cstdlib>
    >
    >double FahrenheittoCelsius(double)= 0.0; //Function Prototype
    >double CelsiustoFahrenheit(double)= 0.0;
    >


    double FahrenheittoCelsius(double arg);
    double CelsiustoFahrenheit(double arg);

    >int _tmain(int argc, _TCHAR* argv[])
    >{


    fine, visual studio will set correct character type depending on
    unicode or multibyte but for now use char instead, since you are
    learning.

    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char f;
    > char c;
    >


    initialize all variables always, this can help you in the future,
    preferably initialize them to some invalid - for your purposes -
    value.

    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;


    ok

    > cout << " Fahrenheit or Celsius?"; // If user does not specify f or c
    >ask them
    > if (temp == f)
    > {


    temp is of type double and f is of type char - what are you doing
    here? looks like you have misstakenly taken then variable name f as
    the variable value 'f'.

    instead use

    const char celsius = 'c';
    const char fahrenheit = 'f';
    char choice;

    cin >> choice;
    if ( choice == celsius )
    {
    }


    > c = FahrenheittoCelsius;
    > cout << f " degrees Fahrenheit is" c " degrees celsius ";
    > cout << " Continue? ";
    >
    > else
    > f = CelsiustoFahrenheit;
    > cout << c " degrees Celsius is " f " degrees Fahrenheit ";
    > cout << " Continue? ";
    >
    > }
    >
    >
    > return temp;
    >}
    >double FahrenheitoCelsius (double f)
    >{
    > return (f - 32) * (5.0/9);
    >}
    >double CelsiustoFahrenheit (double c)
    >{
    > return (9/5.0 * c) + 32;
    >}


    hth/ajk
    ajk, Apr 1, 2007
    #6
  7. ajk Guest

    On 31 Mar 2007 22:22:48 -0700, wrote:

    >// Temperature.cpp : Defines the entry point for the console
    >application.
    >//
    >#include "stdafx.h"
    >#include <iostream>
    >#include <cstdlib>
    >using namespace std;
    >
    >double FahrenheittoCelsius(double); //Function Prototype
    >double CelsiustoFahrenheit(double);
    >
    >int main()
    >{
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char corf;
    >
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> corf;
    >
    > if (corf == 'f')
    > {
    > tempCelsius = FahrenheittoCelsius( temp );


    temp is undefined, it hasn't been set to a value

    > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    ><< " degrees celsius ";
    > cout << " Continue? ";
    > if
    > tempFahrenheit = CelsiustoFahrenheit(temp);
    > cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    >degrees Fahrenheit";
    > cout << " Continue? ";
    > }
    >
    > return 0;
    >}
    >double FahrenheittoCelsius (double f)
    >{
    > return (f - 32) * (5.0/9);
    >}
    >double CelsiustoFahrenheit (double c)
    >{
    > return (9/5.0 * c) + 32;
    >}
    ajk, Apr 1, 2007
    #7
  8. Jim Langston Guest

    <> wrote in message
    news:...
    > You are a lot of help! And...I feel dumb about some of the mistakes
    > that I made. I have no clue where I came up with that. But, I'm still
    > learning. So, here we go. I am having a problem debugging. It won't
    > execute the program. So, I can build and see the errors that come up
    > but it won't execute. What am I missing?
    >
    > Here is my *NEW* code:
    >
    > // Temperature.cpp : Defines the entry point for the console
    > application.
    > //
    > #include "stdafx.h"


    You don't need to include stdafx.h anymore, that was part of precompiled
    headers. Delete that line.

    > #include <iostream>
    > #include <cstdlib>
    > using namespace std;
    >
    > double FahrenheittoCelsius(double); //Function Prototype
    > double CelsiustoFahrenheit(double);
    >
    > int main()
    > {
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char corf;
    >
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> corf;


    You send the message to the console for the user to enter the Temperature,
    but then you have them input if it's celsius or centigrade.

    This should be:

    cout << " Enter the Temperature: "; //Prompt user to enter temp
    cin >> temp;
    cout << "Celcius or Farenheit? ";
    cin >> corf;

    > if (corf == 'f')
    > {
    > tempCelsius = FahrenheittoCelsius( temp );
    > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > << " degrees celsius ";
    > cout << " Continue? ";
    > if


    Somehow you cut off this line. This should probably be:
    if ( corf == 'c' )
    {

    > tempFahrenheit = CelsiustoFahrenheit(temp);
    > cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    > degrees Fahrenheit";
    > cout << " Continue? ";
    > }
    >
    > return 0;
    > }
    > double FahrenheittoCelsius (double f)
    > {
    > return (f - 32) * (5.0/9);
    > }
    > double CelsiustoFahrenheit (double c)
    > {
    > return (9/5.0 * c) + 32;
    > }
    Jim Langston, Apr 1, 2007
    #8
  9. Default User Guest

    Jim Langston wrote:


    > You send the message to the console for the user to enter the
    > Temperature, but then you have them input if it's celsius or
    > centigrade.
    >
    > This should be:
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;
    > cout << "Celcius or Farenheit? ";
    > cin >> corf;
    >
    > > if (corf == 'f')



    This isn't a very robust design. There are all kinds of unused
    characters left hanging around. I'd recommend reading in the entire
    line and examining the first character.




    Brian
    Default User, Apr 1, 2007
    #9
  10. Guest

    Alright guys....
    I agree with you that stdafx.h does not need to be included but it
    won't compile without it.
    Ok....so,I started playing around with it and I got the program to
    finally compile and it is working fairly ok.
    The program will exit when I enter a value because temp,
    tempFahrenheit, and tempCelsius have not been intialized. When I set
    it to 0 I still get the same problem. Any ideas?
    Oh by the way....here is the updated code from this afternoon.

    // Temperature.cpp : Defines the entry point for the console
    application.
    //
    #include "stdafx.h"
    #include <iostream>
    #include <cstdlib>
    using namespace std;

    double FahrenheittoCelsius(double); //Function Prototype
    double CelsiustoFahrenheit(double);

    int main()
    {
    double tempFahrenheit, tempCelsius;
    double temp;
    char corf;



    cout << " Enter the Temperature: "; //Prompt user to enter temp
    cin >> temp;
    cout << " Fahrenheit or Celsius? ";
    cin >> corf;

    if (corf == 'f')
    {
    tempCelsius = FahrenheittoCelsius( temp );
    cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    << " degrees celsius ";
    cout << " Continue? ";

    }
    if (corf == 'c')
    {
    tempFahrenheit = CelsiustoFahrenheit(temp);
    cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    degrees Fahrenheit";
    cout << " Continue? ";

    }

    return temp;
    }
    double FahrenheittoCelsius (double f)
    {
    return (f - 32) * (5.0/9);
    }
    double CelsiustoFahrenheit (double c)
    {
    return (9/5.0 * c) + 32;
    }
    , Apr 1, 2007
    #10
  11. Ian Collins Guest

    wrote:
    > Alright guys....
    > I agree with you that stdafx.h does not need to be included but it
    > won't compile without it.


    Nonsense.

    > Ok....so,I started playing around with it and I got the program to
    > finally compile and it is working fairly ok.
    > The program will exit when I enter a value because temp,
    > tempFahrenheit, and tempCelsius have not been intialized. When I set
    > it to 0 I still get the same problem. Any ideas?


    It will exit because it falls out of main, there is nothing after your
    last output line.

    > Oh by the way....here is the updated code from this afternoon.
    >
    > // Temperature.cpp : Defines the entry point for the console
    > application.
    > //
    > #include "stdafx.h"
    > #include <iostream>
    > #include <cstdlib>


    You don't use anything from <cstdlib>, so it can go as well.

    > using namespace std;
    >
    > double FahrenheittoCelsius(double); //Function Prototype
    > double CelsiustoFahrenheit(double);
    >
    > int main()
    > {
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char corf;
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;
    > cout << " Fahrenheit or Celsius? ";
    > cin >> corf;
    >
    > if (corf == 'f')
    > {
    > tempCelsius = FahrenheittoCelsius( temp );
    > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > << " degrees celsius ";


    You don't initialise tempFahrenheit, so garbage will be output, same
    fortempCelsius in the next block.

    > cout << " Continue? ";
    >

    You could do the above after the if() blocks to avoid duplication.

    > }
    > if (corf == 'c')
    > {
    > tempFahrenheit = CelsiustoFahrenheit(temp);
    > cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    > degrees Fahrenheit";
    > cout << " Continue? ";
    >
    > }
    >
    > return temp;


    This isn't a legal return value from main, 0, EXIT_SUCCESS and
    EXIT_FAILURE are the only portable returns.

    --
    Ian Collins.
    Ian Collins, Apr 1, 2007
    #11
  12. Guest

    On Apr 1, 4:56 pm, Ian Collins <> wrote:
    > wrote:
    > > Alright guys....
    > > I agree with you that stdafx.h does not need to be included but it
    > > won't compile without it.

    >
    > Nonsense.
    >
    > > Ok....so,I started playing around with it and I got the program to
    > > finally compile and it is working fairly ok.
    > > The program will exit when I enter a value because temp,
    > > tempFahrenheit, and tempCelsius have not been intialized. When I set
    > > it to 0 I still get the same problem. Any ideas?

    >
    > It will exit because it falls out of main, there is nothing after your
    > last output line.
    >
    > > Oh by the way....here is the updated code from this afternoon.

    >
    > > // Temperature.cpp : Defines the entry point for the console
    > > application.
    > > //
    > > #include "stdafx.h"
    > > #include <iostream>
    > > #include <cstdlib>

    >
    > You don't use anything from <cstdlib>, so it can go as well.
    >
    >
    >
    >
    >
    > > using namespace std;

    >
    > > double FahrenheittoCelsius(double); //Function Prototype
    > > double CelsiustoFahrenheit(double);

    >
    > > int main()
    > > {
    > > double tempFahrenheit, tempCelsius;
    > > double temp;
    > > char corf;

    >
    > > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > > cin >> temp;
    > > cout << " Fahrenheit or Celsius? ";
    > > cin >> corf;

    >
    > > if (corf == 'f')
    > > {
    > > tempCelsius = FahrenheittoCelsius( temp );
    > > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > > << " degrees celsius ";

    >
    > You don't initialise tempFahrenheit, so garbage will be output, same
    > fortempCelsius in the next block.
    >
    > > cout << " Continue? ";

    >
    > You could do the above after the if() blocks to avoid duplication.
    >
    > > }
    > > if (corf == 'c')
    > > {
    > > tempFahrenheit = CelsiustoFahrenheit(temp);
    > > cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    > > degrees Fahrenheit";
    > > cout << " Continue? ";

    >
    > > }

    >
    > > return temp;

    >
    > This isn't a legal return value from main, 0, EXIT_SUCCESS and
    > EXIT_FAILURE are the only portable returns.
    >
    > --
    > Ian Collins.- Hide quoted text -
    >
    > - Show quoted text -


    I hear ya...but it won't go any further until I intialize that
    variable.
    , Apr 1, 2007
    #12
  13. Ian Collins Guest

    wrote:
    >>You don't initialise tempFahrenheit, so garbage will be output, same
    >>fortempCelsius in the next block.
    >>
    >>
    >>> cout << " Continue? ";

    >>
    >>You could do the above after the if() blocks to avoid duplication.
    >>
    >>
    >>> }
    >>> if (corf == 'c')
    >>> {
    >>> tempFahrenheit = CelsiustoFahrenheit(temp);
    >>> cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    >>>degrees Fahrenheit";
    >>> cout << " Continue? ";

    >>
    >>> }

    >>
    >>> return temp;

    >>
    >>This isn't a legal return value from main, 0, EXIT_SUCCESS and
    >>EXIT_FAILURE are the only portable returns.
    >>
    >>--
    >>Ian Collins.- Hide quoted text -
    >>
    >>- Show quoted text -

    >

    Please don't quote signatures, or that google quoted text crap.
    >
    > I hear ya...but it won't go any further until I intialize that
    > variable.
    >

    What won't? Looking though what you posted, it will run through once,
    then exit.

    --
    Ian Collins.
    Ian Collins, Apr 1, 2007
    #13
  14. Default User Guest

    wrote:

    > Alright guys....
    > I agree with you that stdafx.h does not need to be included but it
    > won't compile without it.


    That's only because you started with the wrong sort of project
    initially. If you can't fix it by changing the project settings, start
    over with a new "console" project and include that file in the new
    project.




    Brian
    Default User, Apr 1, 2007
    #14
  15. Old Wolf Guest

    On Apr 2, 8:56 am, Ian Collins <> wrote:
    > wrote:
    > > Alright guys....
    > > I agree with you that stdafx.h does not need to be included but it
    > > won't compile without it.

    >
    > Nonsense.


    How do you know whether or not the OP's compiler will compile
    code without that line? In fact it seems likely from his
    description that the compilation fails when he deletes it.

    > > tempCelsius = FahrenheittoCelsius( temp );
    > > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > > << " degrees celsius ";

    >
    > You don't initialise tempFahrenheit, so garbage will be output


    The behaviour will be undefined -- it could crash the program, etc.

    > > return temp;

    >
    > This isn't a legal return value from main, 0, EXIT_SUCCESS and
    > EXIT_FAILURE are the only portable returns.


    Other return values are legal. The only 'problem' is that the
    operating system may not be able to determine whether the
    program succeeded or failed.
    Old Wolf, Apr 2, 2007
    #15
  16. Ian Collins Guest

    Old Wolf wrote:
    > On Apr 2, 8:56 am, Ian Collins <> wrote:
    >
    >> wrote:
    >>
    >>>Alright guys....
    >>>I agree with you that stdafx.h does not need to be included but it
    >>>won't compile without it.

    >>
    >>Nonsense.

    >
    > How do you know whether or not the OP's compiler will compile
    > code without that line? In fact it seems likely from his
    > description that the compilation fails when he deletes it.
    >

    He made no mention of a complier, just that the code wouldn't compile
    without it. On my system, it won't compile with it!

    --
    Ian Collins.
    Ian Collins, Apr 2, 2007
    #16
  17. Jim Langston Guest

    <> wrote in message
    news:...
    > Alright guys....
    > I agree with you that stdafx.h does not need to be included but it
    > won't compile without it.


    Make sure you remove the stdafx.cpp from the progject and it should. This
    code does for me in VC++ .net 2003 without stdafx.h

    > Ok....so,I started playing around with it and I got the program to
    > finally compile and it is working fairly ok.
    > The program will exit when I enter a value because temp,
    > tempFahrenheit, and tempCelsius have not been intialized. When I set
    > it to 0 I still get the same problem. Any ideas?
    > Oh by the way....here is the updated code from this afternoon.


    Run the program with ctrl-F5 instead of F5 and you will get a
    Press any key to continue...
    after the program runs allowing you to see the output. This is Microsoft
    specific.

    Personally, I just make it wait in code by putting at the end of main
    something on the line of:
    std::string wait;
    std::getline( std::cin, wait );

    >
    > // Temperature.cpp : Defines the entry point for the console
    > application.
    > //
    > #include "stdafx.h"
    > #include <iostream>
    > #include <cstdlib>
    > using namespace std;
    >
    > double FahrenheittoCelsius(double); //Function Prototype
    > double CelsiustoFahrenheit(double);
    >
    > int main()
    > {
    > double tempFahrenheit, tempCelsius;
    > double temp;
    > char corf;
    >
    >
    >
    > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > cin >> temp;


    Okay, the temperature is entered into a variabled called "temp".

    > cout << " Fahrenheit or Celsius? ";
    > cin >> corf;
    >
    > if (corf == 'f')
    > {
    > tempCelsius = FahrenheittoCelsius( temp );
    > cout << tempFahrenheit << " degrees Fahrenheit is" << tempCelsius
    > << " degrees celsius ";


    The variable "tempFahrenheit" is not being used. The value was stored in
    temp, not tempFahrenheit.
    cout << temp << " degrees Fahrenheit is" << tempCelsius << " degrees
    celsius ";

    > }
    > if (corf == 'c')
    > {
    > tempFahrenheit = CelsiustoFahrenheit(temp);
    > cout << tempCelsius << " degrees Celsius is " << tempFahrenheit << "
    > degrees Fahrenheit";


    Same here, output temp, not tempCelsius.

    > cout << " Continue? ";
    >
    > }
    >
    > return temp;
    > }
    > double FahrenheittoCelsius (double f)
    > {
    > return (f - 32) * (5.0/9);
    > }
    > double CelsiustoFahrenheit (double c)
    > {
    > return (9/5.0 * c) + 32;
    > }
    Jim Langston, Apr 2, 2007
    #17
  18. James Kanze Guest

    On Apr 1, 8:40 pm, "Default User" <> wrote:
    > Jim Langston wrote:
    > > You send the message to the console for the user to enter the
    > > Temperature, but then you have them input if it's celsius or
    > > centigrade.


    > > This should be:


    > > cout << " Enter the Temperature: "; //Prompt user to enter temp
    > > cin >> temp;
    > > cout << "Celcius or Farenheit? ";
    > > cin >> corf;


    > > > if (corf == 'f')

    >
    > This isn't a very robust design. There are all kinds of unused
    > characters left hanging around. I'd recommend reading in the entire
    > line and examining the first character.


    The first non-blank character, and then verifying that there
    aren't any other non-blanck characters in the line:).

    --
    James Kanze (GABI Software) email:
    Conseils en informatique orientée objet/
    Beratung in objektorientierter Datenverarbeitung
    9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
    James Kanze, Apr 2, 2007
    #18
  19. James Kanze Guest

    On Apr 1, 10:56 pm, Ian Collins <> wrote:
    > wrote:
    > > Alright guys....
    > > I agree with you that stdafx.h does not need to be included but it
    > > won't compile without it.


    > Nonsense.


    Worse. On my systems, it won't compile with it.

    [...]
    > > return temp;


    > This isn't a legal return value from main, 0, EXIT_SUCCESS and
    > EXIT_FAILURE are the only portable returns.


    Just a nit: it's legal, temp is a double, and a double converts
    implicitly to an int. It doesn't make any sense, and the
    results are very much implementation defined, but it is legal.

    --
    James Kanze (GABI Software) email:
    Conseils en informatique orientée objet/
    Beratung in objektorientierter Datenverarbeitung
    9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
    James Kanze, Apr 2, 2007
    #19
  20. Ian Collins Guest

    James Kanze wrote:
    > On Apr 1, 10:56 pm, Ian Collins <> wrote:
    >
    >>This isn't a legal return value from main, 0, EXIT_SUCCESS and
    >>EXIT_FAILURE are the only portable returns.

    >
    >
    > Just a nit: it's legal, temp is a double, and a double converts
    > implicitly to an int. It doesn't make any sense, and the
    > results are very much implementation defined, but it is legal.
    >

    You're right, I should have written "portable" rather than "legal".

    > --


    *Please* fix this - it's a pain to have to keep manually trimming your
    signature.

    --
    Ian Collins.
    Ian Collins, Apr 2, 2007
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    7
    Views:
    1,649
    Joe Knapka
    Jul 24, 2006
  2. Flemming Hansen

    CPU temperature reading with C

    Flemming Hansen, Mar 16, 2005, in forum: C Programming
    Replies:
    8
    Views:
    1,243
    Thomas Matthews
    Mar 17, 2005
  3. deanfamily11

    Temperature conversion

    deanfamily11, Sep 10, 2005, in forum: C++
    Replies:
    1
    Views:
    430
    Shezan Baig
    Sep 10, 2005
  4. Newbie

    CPU temperature reading

    Newbie, Dec 9, 2005, in forum: C++
    Replies:
    1
    Views:
    359
    Victor Bazarov
    Dec 9, 2005
  5. arnuld
    Replies:
    4
    Views:
    475
    arnuld
    Mar 4, 2007
Loading...

Share This Page