Компиляция и получение «необъявленного» сообщения взамен - PullRequest
0 голосов
/ 09 февраля 2012

Это кодировка, которую я имею до сих пор. Я работаю с онлайн-компилятором, а не с обычным, поэтому мне трудно найти проблемное место. Цель состоит в том, чтобы ввести градусы Фаренгейта и вывести Цельсия.

#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;
  } 

UPDATE:

Хорошо, это исправленный код. Я прочитал некоторые исправления до того, как прочитал комментарии, и (потому что я не упомянул об этом раньше) я начинающий. Это все странная территория для меня, поэтому я ценю все отзывы. Если что-то, что я делаю, не имеет смысла, не стесняйтесь указывать на это и / или вносить предложения.

#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 голосов
/ 09 февраля 2012

Эта строка выглядит неправильно:

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

Почему fahr и cent должны быть набраны 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) в конце этого выражения, что не является правильным использованием для приведения.

0 голосов
/ 09 февраля 2012

Ваша первая ошибка связана с добавлением >> 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

0 голосов
/ 09 февраля 2012

(число с плавающей точкой) в конце строки, начинающейся с "цента", не является синтаксическим.

Удалять это хорошо, так как в этой программе используются плавающие вместо целых чисел.

...