河北工業大學C實驗報告實驗四_第1頁
河北工業大學C實驗報告實驗四_第2頁
河北工業大學C實驗報告實驗四_第3頁
河北工業大學C實驗報告實驗四_第4頁
河北工業大學C實驗報告實驗四_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1、編寫一個程序,要求:(1)生明一個類Complex(復數類),定義類Complex的兩個對象c1和c2,對象c1通過構造函數直接指定復數的實部和虛部(類私有數據成員為double類型:real和imag)為2.5及3.7,對象c2通過構造函數直接指定復數的實部和虛部為4.2及6.5;(2)定義友元運算符重載函數,它以c1、c2對象為參數,調用該函數時能返回兩個復數對象相加操作;(3)定義成員函數print,調用該函數時,以格式“real+imag i”輸出當前對象的實部和虛部,例如:對象的實部和虛部分別是4.2和6.5,則調用print函數輸出格式為:4.2+6.5 i;(4)編寫主程序,

2、計算出復數對象c1和c2相加結果,并將其結果輸出。#include<iostream>using namespace std;class Complex public: Complex(double r=0.0,double i=0.0); friend Complex operator+ (Complex& a,Complex& b); void printf(); private: double real; double imag;Complex:Complex(double r,double i)real=r;imag=i;Complex operator+

3、(Complex& a,Complex& b)Complex temp;temp.real=a.real+b.real;temp.imag=a.imag+b.imag;return temp;void Complex:printf()cout<<real;if(imag>0)cout<<"+"if(imag!=0)cout<<imag<<'i'<<endl;void main()Complex c1(2.5,3.7),c2(4.2,6.5),c3;c3=c1+c2;c3.pri

4、ntf();2、編寫一個程序,其中設計一個時間類Time,用來保存時、分、秒等私有數據成員,通過重載操作符“+”實現兩個時間的相加。要求將小時范圍限制在大于等于0,分鐘范圍限制在059分,秒鐘范圍限制在059秒。提示:時間類Time的參考框架如下:class Time public: Time(int h=0,int m=0,int s=0);/構造函數 Time operator+(Time &);/運算符重載函數,實現兩個時間的相加 void disptime();/顯示時間函數 private: int hours,minutes,seconds;#include<iost

5、ream>using namespace std;class Timepublic:Time(int h=0,int m=0,int s=0);/構造函數 Time operator+(Time &);/運算符重載函數,實現兩個時間的相加 void disptime();/顯示時間函數 private:int hours;intminutes;int seconds;Time:Time(int h,int m,int s)hours=h;minutes=m;seconds=s;Time Time:operator+(Time& t)int h,m,s;s=(t.secon

6、ds+seconds)%60;m=(minutes+t.minutes+(t.seconds+seconds)/60)%60;h=hours+t.hours+(minutes+t.minutes+(t.seconds+seconds)/60)/60;hours=h;minutes=m;seconds=s;return *this;void Time:disptime()cout<<hours<<":"<<minutes<<":"<<seconds<<"."<

7、<endl;void Input(int &h,int &m,int &s)cout<<"輸入時間:"cin>>h ;cin>>m ;cin>>s ;while(m<0|m>59|s<0|s>59) cout<<"*時間輸入錯誤!請重新輸 !*n"cout<<"輸入時間 : "cin>>h ;cin>>m ;cin>>s ;int main()int h1,m1,s1,h2,

8、m2,s2;Input(h1,m1,s1);Input(h2,m2,s2);Time A(h1,m1,s1),B(h2,m2,s2);A=A+B ;A.disptime();return 0;3、用友元運算符函數或成員運算符函數,重載運算符“+”、“-”、“*”,實現對實驗二中實現的矩陣類的對象的加、減、乘法。#include<iostream>#define hang 2#define lie 2class Matrixprivate:int Row;int Column;int MATRIXhanglie;public:Matrix(int r,int c)Row=r;Colu

9、mn=c;Matrix() void TypeMatrix();void Print() const;Matrix& operator = (const Matrix& rhs);Matrix operator + (const Matrix& rhs);Matrix operator - (const Matrix& rhs);void Matrix:TypeMatrix()std:cout<<"請輸入矩陣:"<<std:endl;for(int i=0;i<hang;i+)for(int j=0;j<l

10、ie;j+)std:cin>>MATRIXij;void Matrix:Print() conststd:cout<<"矩陣的結果為:"<<std:endl;for(int q=0;q<hang;q+)for(int s=0;s<lie;s+)std:cout<<MATRIXqs<<"t"if(s=lie-1)std:cout<<std:endl;Matrix& Matrix:operator = (const Matrix& rhs)if(this!=&

11、amp;rhs)for(int g=0;g<hang;g+)for(int h=0;h<lie;h+)this->MATRIXgh=rhs.MATRIXgh;return *this;Matrix Matrix:operator + (const Matrix& rhs)int i,j;for(i=0;i<hang;i+)for(j=0;j<lie;j+)MATRIXij=this->MATRIXij+rhs.MATRIXij;return *this ;Matrix Matrix:operator - (const Matrix& rhs)

12、int i,j;for(i=0;i<hang;i+)for(j=0;j<lie;j+)MATRIXij=this->MATRIXij-rhs.MATRIXij;return *this ;int main()Matrix a,b,c,d;a.TypeMatrix();b.TypeMatrix();c=a+b;c.Print();d=a-b;d.Print();4、編寫一個程序,用于進行集合的和、并和交運算。例如輸入整數集合9,5,4,3,6,7和2,4,6,9,計算出他們進行集合的并、差和交運算后的結果。【提示】(1)可以用一下表達式實現整數集合的基本運算:s1+s2 兩個整

13、數集合的并運算s1-s2 兩個整數集合的差運算s1*s2 兩個整數集合的交運算(2)參考以下Set類的框架,用于完成集合基本運算所需的各項功能。class Set public: Set(); void input(int d);/向集合中添加一個元素 int length();/返回集合中的元素個數 int getd(int i);/返回集合中位置i的元素 void display();/顯示集合的所有元素 Set operator+(Set s1);/成員運算符重載函數,實現集合的并運算 Set operator-(Set s1);/成員運算符重載函數,實現集合的差運算 Set opera

14、tor*(Set s1);/成員運算符重載函數,實現集合的交運算 Set operator=(Set s1);/成員運算符重載函數,實現集合的賦值運算 protected: int len;/統計結合中元素的個數; int sMAX;/存放集合中的元素 ;#include<iostream>using namespace std;const int MAX = 50;class set public: set(); void input(int d); int length(); int getd(int i); void disp(); set operator+(set s1)

15、;set operator-(set s1);set operator*(set s1);set operator=(set s1); protected:int len;int sMAX;set:set()len = 0;/s =0;cout << "*建立一個集合*n"void set:input(int d)len = d;cout << "輸入集合元素" << d <<" 個:"for(int i = 0; i < d; i+ )cin >> si ;int s

16、et:length()int n=0;while(sn != '0')n+;return n;int set:getd(int i)return 0;void set:disp()for (int i = 0; i < len; i+)cout << si << " "/cout << endl;set set:operator+(set s1) /-并運算-/strcat(s,s1.s); for (int i = 0; i < len; i+) for(int j = 0; j < s1.len; j

17、+) /在s1.s中選出不相同的 if(si = s1.sj) /選出相同的元素刪掉得到s1.s與s不同的元素 for (;j < s1.len; j+)s1.sj = s1.sj+1; -s1.len; for (int j = 0;j < s1.len; j+ ) / 將s1.s中不相同的加在s后面 slen = s1.sj; len+; slen+s1.len = '0' return *this;set set:operator-(set s1) /-差運算-int t;for (int i = 0; i < s1.len; i+) for(int j

18、 = 0; j < len; j+) if(s1.si = sj ) /選出s與s1.s中相同的元素并且刪除掉 t = j; for (;t < len; t+)st = st+1;-len; return *this;set set:operator*(set s1) / -交運算-int mMAX;int l = 0;for (int i = 0; i < s1.len; i+) for(int j = 0; j < len; j+) / 選出相同的元素 if(s1.si = sj) ml = sj; l+; for (i = 0; i < l; i+)si

19、= mi;sl = '0'len = l;return *this;set set:operator=(set s1)for (int i = 0; i < s1.length(); i+) si = s1.si;len = s1.len;return *this;int main()int n;set C;set A;cout << "建立含有幾個元素的集合:"cin >> n; A.input(n);set B;cout << "建立含有幾個元素的集合:"cin >> n; B.i

20、nput(n);cout << endl;cout << "兩集合的差集(A - B)為:"C = A - B;C.disp(); cout << endl;/*cout << "兩集合的交集(A * B)為:"C = A * B;C.disp(); cout << endl;*/*cout << "兩集合的并集(A + B)為:"C = A + B;C.disp(); cout << endl;*/return 0;說明分別分開運行6、寫一個程序,定

21、義抽象類Container:class Container protected: double radius; public: Container(double r);/抽象類Container的構造函數 virtual double surface_area()=0;/純虛函數surface_area virtual double volume()=0;/純虛函數volume ;【要求】建立3個繼承Container的派生類:Sphere(球體)、Cylinder(圓柱體)、Cube(正方體),讓每一個派生類都包含虛函數surface_area()和volume(),分別用來球體、圓柱體和正

22、方體的表面積和體積。要求寫出主程序,應用C+的多態性,分別計算邊長為6.0的正方體、半徑為5.0的球體,以及半徑為5.0和高為6.0的圓柱體的表面積和體積。#include<iostream>#include<string>using namespace std;class container protected: double radius; public: container(double radius1); virtual double surface_area()=0; virtual double volume()=0;container:container(

23、double radius1)radius=radius1;/派生類cube、sphere與cylinderclass cube : public container public: cube(double radius1):container( radius1 ) virtual double surface_area(); virtual double volume();double cube : surface_area() return 6*radius*radius;double cube : volume()return radius*radius*radius;class sph

24、ere : public container public: sphere(double radius1):container( radius1 ) virtual double surface_area(); virtual double volume(); ;double sphere : surface_area() return 4*3.14*radius*radius;double sphere : volume()return 4.0/3.0*3.14*radius*radius*radius;class cylinder : public container protected: double high; public: c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論