p288 输入输出流 三角形 2020.03.04 todo debug

#include <iostream>
#include <fstream>
#include <string.h>
#include <iomanip>
#include <math.h>
using namespace std;
//p288 输入输出流  三角形 2020.03.04 todo debug
class Triangle{
    double x,y,z,area;
public:
    Triangle(){}
    void getArea(){
        double p = (x+y+z)*0.5;
        area = sqrt(p*(p-x)*(p-y)*(p-z));

    }
    void dispa(){
        cout<<" 三角形三边"<<x<<","<<y<<","<<z<<",面积为:"<<area<<endl;

    }
    friend void setdata();
    friend void readdata();
};

void setdata(){
    Triangle t;
    double a,b,c;
    int n=0;
    char *filename = "trig.dat";
    fstream iofile;
    iofile.open(filename,ios::in|ios::out);
    if(!iofile){
        cout<<"不能正确建立文件!"<<endl;
        return;
    }
    while(1){
        cout<<" 输入一个三角形"<<endl;
        cout<<" 三角形边a:";
        cin>>a;
        if(a==-1) break;
        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.x = a;
            t.y = b;
            t.z = c;
            t.getArea();
            n++;
            iofile.write((char *)&t, sizeof(t));
        }else cout<<"不能组成三角形,重新输入"<<endl;
    }

    iofile.close();
    cout<<"一共写入"<<n<<"个三角形信息"<<endl;


}
void readdata(){
    Triangle t;
    char *filename = "trig.dat";
    fstream iofile;
    iofile.open(filename,ios::in|ios::out);
    cout<<"读数据"<<endl;
    if(!iofile){
        cout<<" 不能打开指定的文件!"<<endl;
        return ;
    }
    iofile.seekg(0,ios::beg);
    while (!iofile.eof()){
        iofile.read((char *)&t,sizeof(t));
        if(iofile.eof()) break;
        t.dispa();
    }

    iofile.close();


}
int main(){
    cout<<"输入若干个三角形存入文件"<<endl;
    setdata();
    cout<<"从文件中读出三角形"<<endl;
    readdata();
    return 0;
}









全部评论

相关推荐

牛至超人:您好,京东物流岗了解一下吗?负责精加工食品的端到端传输
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务