要求输入三角形的3条边,然后判断是否合理,如果不合理,给出信息并要求重新输入;如果合理,计算其面积并将结果存入文件中

loving1994 2014-07-15 11:18:35
哪有错木

#include < iostream >
#include < fstream >
#include < cmath >
#include < vector >
#include < iomanip >
#include < string >
using namespace std;

class Triangle
{
double sizeA, sizeB, sizeC, area;
public:
Triangle(){}
void setArea()
{
double p = (sizeA + sizeB + sizeC) *0.5;
area = sqrt( p * (p - sizeA) * (p - sizeB) * (p - sizeC) );
}
void setSizeA(double a)
{
sizeA = a;
}
void setSizeB(double b)
{
sizeB = b;
}
void setSizeC(double c)
{
sizeC = c;
}
void set(vector &);
};
//***************************************
//* 成员函数:set
//* 参 数 :向量对象的引用
//* 返回值 :无
//* 功能 :为向量赋值并将向量存入文件
//***************************************
void Triangle :: set(vector & v )
{
Triangle t;
double a, b, c;
while(1)
{
cout<<"三角形,边A:";
cin>>a;

if(a == -1)//结束符为-1
{
ofstream writeFile;
char fileName[20];
cout<<"输入要保存到的文件名:";
cin>>fileName;
cout<<"保存到文件:"<< fileName << endl;
writeFile.open(fileName);
if(writeFile.fail())
{
cout<<"没有正确建立文件!"<< endl;
return;
}
for(int i=0; i< v.size(); i++)
writeFile<< v[i].sizeA <<" "<< v[i].sizeB <<" "<< v[i].sizeC <<" "<< v[i].area << endl;
writeFile.close();
cout<<"一共写入"<< v.size() <<"个三角形信息"<< endl;
return;
}
cout<<"三角形,边B:";
cin>> b;
cout<<"三角形,边C:";
cin>> c;
if( a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a )
{

t.setSizeA(a);
t.setSizeB(b);
t.setSizeC(c);
t.setArea();
v.push_back(t);
}
else
cout<<"不能组成三角形,重新输入"<< endl;
}
}
void main()
{
vector tri;
Triangle triangle;
triangle.set(tri);
}




高手求解 有更好的求解吗
...全文
499 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-07-15
  • 打赏
  • 举报
回复
#include < iostream >
#include < fstream >
#include < cmath >
#include < vector >
#include < iomanip >
#include < string >
using namespace std;

class Triangle {
    double sizeA, sizeB, sizeC, area;
public:
    Triangle() {}
    void setArea() {
        double p = (sizeA + sizeB + sizeC) *0.5;
        area = sqrt( p * (p - sizeA) * (p - sizeB) * (p - sizeC) );
    }
    void setSizeA(double a) {
        sizeA = a;
    }
    void setSizeB(double b) {
        sizeB = b;
    }
    void setSizeC(double c) {
        sizeC = c;
    }
    void set(vector  &);
};
//***************************************
//* 成员函数:set
//* 参 数   :向量对象的引用
//* 返回值  :无
//* 功能    :为向量赋值并将向量存入文件
//***************************************
void Triangle :: set(vector  & v ) {
    Triangle t;
    double a, b, c;
    while(1) {
        cout<<"三角形,边A:";
        cin>>a;

        if(a == -1)//结束符为-1
        {
            ofstream writeFile;
            char fileName[20];
            cout<<"输入要保存到的文件名:";
            cin>>fileName;
            cout<<"保存到文件:"<< fileName << endl;
            writeFile.open(fileName);
            if(writeFile.fail()) {
                cout<<"没有正确建立文件!"<< endl;
                return;
            }
            for(int i=0; i< v.size(); i++)
                writeFile<< v[i].sizeA <<" "<< v[i].sizeB <<" "<< v[i].sizeC <<" "<< v[i].area << endl;
            writeFile.close();
            cout<<"一共写入"<< v.size() <<"个三角形信息"<< endl;
            return;
        }
        cout<<"三角形,边B:";
        cin>> b;
        cout<<"三角形,边C:";
        cin>> c;
        if( a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a ) {

            t.setSizeA(a);
            t.setSizeB(b);
            t.setSizeC(c);
            t.setArea();
            v.push_back(t);
        } else
            cout<<"不能组成三角形,重新输入"<< endl;
    }
}
void main() {
    vector  tri;
    Triangle triangle;
    triangle.set(tri);
}
赵4老师 2014-07-15
  • 打赏
  • 举报
回复
#include < iostream >
#include < fstream >
#include < cmath >
#include < vector >
#include < iomanip >
#include < string >
using namespace std;

class Triangle
{
double sizeA, sizeB, sizeC, area;
public:
Triangle(){}
void setArea()
{
double p = (sizeA + sizeB + sizeC) *0.5;
area = sqrt( p * (p - sizeA) * (p - sizeB) * (p - sizeC) );
}
void setSizeA(double a)
{
sizeA = a;
}
void setSizeB(double b)
{
sizeB = b;
}
void setSizeC(double c)
{
sizeC = c;
}
void set(vector  &);
};
//***************************************
//* 成员函数:set
//* 参 数   :向量对象的引用
//* 返回值  :无
//* 功能    :为向量赋值并将向量存入文件
//***************************************
void Triangle :: set(vector  & v )
{
Triangle t;
double a, b, c;
while(1)
{
cout<<"三角形,边A:";
cin>>a;

if(a == -1)//结束符为-1
{
ofstream writeFile;
char fileName[20];
cout<<"输入要保存到的文件名:";
cin>>fileName;
cout<<"保存到文件:"<< fileName << endl;
writeFile.open(fileName);
if(writeFile.fail())
{
cout<<"没有正确建立文件!"<< endl;
return;
}
for(int i=0; i< v.size(); i++)
writeFile<< v[i].sizeA <<" "<< v[i].sizeB <<" "<< v[i].sizeC <<" "<< v[i].area << endl;
writeFile.close();
cout<<"一共写入"<< v.size() <<"个三角形信息"<< endl;
return;
}
cout<<"三角形,边B:";
cin>> b;
cout<<"三角形,边C:";
cin>> c;
if( a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a )
{

t.setSizeA(a);
t.setSizeB(b);
t.setSizeC(c);
t.setArea();
v.push_back(t);
}
else
cout<<"不能组成三角形,重新输入"<< endl;
}
}
void main()
{
vector  tri;
Triangle triangle;
triangle.set(tri);
}
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧