[C++]學習面向物件之輸入輸出流
阿新 • • 發佈:2018-12-11
需要實現的功能:
(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; }