В этом случае tArea
просто ссылка, что говорит компьютеру, где найти фактический tArea()
код функции.
Таким образом, вы на самом деле просто печатаете ссылку tArea
, которая является адресом. Этот адрес - это число, но iostream cout
действительно не знает, что это значит. Он пытается истолковать это как можно лучше, и он выдает все искаженные буквы и цифры.
Что вы хотите сделать, это вызвать функцию вашей области и распечатать возвращенный результат. Для этого вам нужно добавить круглые скобки в конец вызова функции.
Если вы имели функцию области, которая не приняла никаких параметров, то вы могли бы назвать это как этот tArea();
Однако в коде сигнатура функции следующим образом
float tArea(float a, float b, float c, float s, float area)
Это означает, что для того, чтобы ваш чтобы вернуть область в виде поплавка, вам необходимо передать 5 параметров. Все 5 из этих параметров должны быть плавающими.
действительный вызов для вас будет что-то вроде
tArea(2.0, 2.1, 1.8, 3.0, 4.0);
Изменяя эту строку
cout << "the area is" << tArea;
к этому
cout << "the area is" << tArea(a, b, c, 1.0, 1.0);
Вы можете решить проблему.
Я призываю вас сделать еще один шаг и изменить следующие строки, которые не связаны с вашим точным вопросом. Изменить
float tArea(float a, float b, float c, float s, float area)
{
s = (a + b + c)/2;
area = sqrt(s*(s - a)*(s - b)*(s - c));
return area;
}
в
float tArea(float a, float b, float c)
{
float s = (a + b + c)/2;
float area = sqrt(s*(s - a)*(s - b)*(s - c));
return area;
}
затем вызвать его, как этот
cout << "the area is" << tArea(a, b, c);
Это лучше, потому что она удаляет s и область от подписи функции. Поскольку они не нужны до вычисления, которое происходит внутри функции области, и они немедленно перезаписываются внутри функции, нам все равно, каковы их значения раньше. Вот почему я показал вам, что оба они могут быть переданы как 1.0. В действительности они могут быть любыми плавающими, и это не имело бы значения, так как они были немедленно перезаписаны.
сек и площадь должна быть локальной переменной специфичной только к объему функции области, как IanM_Matrix1 предложил. Таким образом, эти временные переменные будут уничтожены до освобождения памяти. Выполнение этого способа - это более эффективная практика.
'cout <<" область "<< tArea;' Вы не называете свою функцию – UKMonkey