需要实现的功能:
(1) 输入三角形的三个a,b,c计算三角形的面积公式是
形成三角形的条件是:a+b>c,b+c>a,c+a>b
编写程序,输入a,b,c,检查a,b,c,是否满足条件,如不满足,由cerr输出错误信息。
#include<iostream>
#include<math.h>
using namespace std;
class area
{
public:
void input();
private:
double a;
double b;
double c;
};
void area::input()
{
double s;
cout<<"请输入三角形的三边:"<<endl;
cin>>a>>b>>c;
s=(a+b+c)/2;
if(a+b>c&&b+c>a&&c+a>b)
cout<<sqrt(s*(s-a)*(s-b)*(s-c))<<endl;
else
cerr<<"输入的三边不符合要求"<<endl;
}
int main()
{
area a;
a.input();
return 0;
}
(2) 从键盘输入一批数值,要求保留3位小数,在输出时上下行小数点对齐。
A) 用控制符控制输出格式
B) 用流成员函数控制输出格式。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double a,b,c;
cout<<"input a b c"<<endl;
cin>>a>>b>>c;
cout<<"a:"<<setprecision(4)<<setiosflags(ios::left)<<a<<endl;
cout<<"b:"<<setprecision(4)<<setiosflags(ios::left)<<b<<endl;
cout<<"c:"<<setprecision(4)<<setiosflags(ios::left)<<c<<endl;
cout.precision(4);
cout<<"a:"<<a<<endl;
cout<<"b:"<<b<<endl;
cout<<"c:"<<c<<endl;
return 0;
}
(3) 建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:
A) 从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件放10个整数);
B) 从f1.dat读入10个数,然后存放到f2.dat文件原有的数据后面;
C) 从f2.dat中读入20个整数,将它们按从从小到大的顺序存放到f2.dat(不保留原来数据)。
#include<fstream>
#include<iostream>
#include<stdlib.h>
using namespace std;
void save_f1()
{
int a[10];
ofstream outfile("f1.dat",ios::out);
if(!outfile)
{
cerr<<"open error"<<endl;
exit(1);
}
cout<<"enter 10 integer numbers:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
outfile<<a[i]<<" ";
}
outfile.close();//存放10个数据到f1.dat
}
void save_f2()
{
int a[10];
ofstream outfile("f2.dat");
if(!outfile)
{
cerr<<"open error"<<endl;
exit(1);
}
cout<<"enter 10 integer numbers:"<<endl;
for(int i=0;i<10;i++)
{
cin>>a[i];
outfile<<a[i]<<" ";
}
outfile.close();//存放10个数据到f2.dat
}
void load_f1_save_f2()
{
int b[10];
ifstream infile("f1.dat");
if(!infile)
{
cerr<<"open error"<<endl;
exit(1);
}
cout<<"从f1.dat中读10个数据到b数组中:";
for(int i=0;i<10;i++)
{
infile>>b[i];
cout<<b[i]<<" ";
}
cout<<endl;
infile.close();//从f1.dat中读10个数据到b数组中
ofstream outfile("f2.dat",ios::app);
for(i=0;i<10;i++)
{
outfile<<b[i]<<" ";
}
outfile.close();//存放到f2.dat文件原有的数据后面
}
void load_f2_save_f2()
{
int a[20];
int i;
int x=0,y=0,n=0,t;
ifstream infile("f2.dat");
if(!infile)
{
cerr<<"open error"<<endl;
exit(1);
}
cout<<"从f2.dat中读20个数据到a数组中:";
for(i=0;i<20;i++)
{
infile>>a[i];
cout<<a[i]<<" ";
}
cout<<endl;
infile.close();
for(x-0;x<20;x++)
{
for(y=0;y<20;y++)
{
if(a[x]<a[y])
{
t=a[x];
a[x]=a[y];
a[y]=t;
}
}
}
cout<<"小到大顺序:";
for(i=0;i<20;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
ofstream outfile("f2.dat",ios::out);
cout<<endl;
for(i=0;i<20;i++)
{
outfile<<a[i]<<" ";
cout<<a[i];
}
outfile.close();//将从小到大的顺序存入f2.dat
}
int main()
{
save_f1();
save_f2();
load_f1_save_f2();
load_f2_save_f2();
return 0;
}