编译并获得“未声明”的消息作为回报

时间:2012-02-09 04:03:01

标签: c++ floating-point

这是我到目前为止的编码。我正在使用在线编译器,而不是我的普通编译器,所以我很难找到问题点。目标是输入华氏温度并输出摄氏度。

#include<iostream>
using namespace std;
int main ()

{
    int fahr=0, cent=0, count=0;

    while(fahr!=-99999)
    {
        count++;
        cin>>fahr>>endl;
        cout<<"Input temperature, in Farhenheit, to be converted to Centigrade" <<endl;


        cent=(5./9.)*(fahr-32)(float);

        cout<<"The input Farhenheit value "<<fahr<<" corresponds to the Centigrade value of "<<cent<<endl;
    }
return 0;
  } 

更新:

好的,这是更正后的代码。在我阅读评论之前,我发现了一些更正,并且(因为我之前没有提到过)我是一个完全的初学者。这对我来说都是一个奇怪的领域,所以我很感激所有的反馈。如果我正在做的事情没有意义,请随意指出并/或提出建议。

#include<iostream>
using namespace std;
int main ()

{
    int fahr=0, cent=0, count=0;

    while(fahr!=-99999)
    {
        count++;
        cin>>fahr;
        cout<<"Input temperature, in Farhenheit, to be converted to Centigrade"<<endl;


            cent=(float)(5./9.)*(fahr-32);

        cout<< "The input Farhenheit value " <<fahr<< " corresponds to the Centigrade value of " <<cent<< endl;
    }
return 0;
  }

3 个答案:

答案 0 :(得分:0)

(float)在以&#34;分&#34;开头的行的末尾不是句法。

删除它很好,因为在此程序中使用浮动而不是整数。

答案 1 :(得分:0)

这一行看起来可能有误:

cent=(5./9.)*(fahr-32)(float);

浮动的通常语法是:

float sngValue = (float) intValue; // casts an integer to a float
float sngValue = (float) dblValue; // casts a double to a float

为什么必须输入fahrcent int?如果必须,则使用:

cent = (fahr - 32) * 5 / 9;

公式将每个中间结果保持为整数,我们将最后一步除以尽可能减少舍入。否则,如果fahr和cent被输入float,您可以更灵活一点:

#include<iostream>
using namespace std;
int main ()
{
    int count = 0;
    float fahr = 0.0f, cent = 0.0f;
    while (fahr != -99999.0f)
    {
        count++;
        cin >> fahr >> endl;
        cout<<"Input temperature, in Farhenheit, to be converted to Centigrade" <<endl;
        cent = (5.0f / 9.0f) * (fahr - 32.0f); // no need for casting, everything's in float
        cout << "The input Farhenheit value " << fahr << " corresponds to the Centigrade value of " << cent << endl;
    }
    return 0;
}

您在该表达式的末尾有一个(float)关键字,但这不适用于投射。

答案 2 :(得分:0)

您的第一个错误与在>> endl之后添加cin >> fahr

有关
error: no match for ‘operator>>’ in ‘std::cin.std::basic_istream<_CharT, _Traits>::operator>> [with _CharT = char, _Traits = std::char_traits<char>]((* & fahr)) >> std::endl’

删除它,只需cin >> fahr;即可从int读取stdin。您使用std::endl添加新行并刷新输出流(ostream),例如cout,而不是输入流,例如cin


该行还有一个错误:

cent=(5./9.)*(fahr-32)(float);

如果您想将(5./9.)*(fahr-32)的结果投射到float,那么您可以在开头使用投射(float)

但是,由于cent的类型为int,因此更为无意义。也许你想把(fahr-32)投射到一个float,不管是演员都在前面。


编辑:您更新的代码出现了新错误。如果您希望cent成为float,请将其声明为:http://ideone.com/nprW9