我想在这个程序中输出三角形的计算区域,但是当我尝试从函数输出区域时,我得到了字母和数字的混合而不是答案,如果有人能指出什么我做错了,将不胜感激。C++函数输出
我累了tArea(区域),但它给出了一个不同的错误。
我想在这个程序中输出三角形的计算区域,但是当我尝试从函数输出区域时,我得到了字母和数字的混合而不是答案,如果有人能指出什么我做错了,将不胜感激。C++函数输出
我累了tArea(区域),但它给出了一个不同的错误。
您没有调用该函数。当你使用没有括号的tArea名时,C++会给你函数的地址而不是调用它,并且这将以十六进制格式打印。当你做
cout << "the area is" << tArea;
您将数据发送到标准输出
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
float tArea(float a, float b, float c);
int main()
{
float a, b, c;
cout << "Enter side 1: ";
cin >> a;
cout << "Enter side 2: ";
cin >> b;
cout << "Enter side 3: ";
cin >> c;
cout << "the area is" << tArea(a, b, c);
return 0;
}
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;
}
:
此外,您还可以使用局部变量而不是使用参数工作计算。您可以将其视为将数据打印到控制台,因为这是标准输出正常进行的地方。
在这种情况下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);
这是更好,因为它从功能上签名删除小号和区。由于在函数内部进行计算之前不需要它们,并且它们立即在函数内重写,所以我们不在乎它们的值是什么。这就是为什么我告诉你他们都可以通过1.0。实际上,它们可以是任何浮动,并且因为它们立即被覆盖而没有关系。
小号和面积应该仅针对区域功能的范围局部变量IanM_Matrix1已建议。这样做将允许这些临时变量在释放内存之前被销毁。这样做是一种更好的做法。
'cout <<“该区域是”<< tArea;'你没有调用你的函数 – UKMonkey