




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。VC+作業江蘇科技大學課程實踐報告設計題目:計算機程序設計實踐(VC+)設計時間:2012.9.24至2012.9.30學院:電子信息學院專業班級:電氣工程及其自動化學生姓名:金成學號1140304316指導老師:張曉如2012年9月實踐任務116定義一個方陣類CMatrix,并根據給定算法實現方陣的線性變換。方陣的變換形式為:F=W*fTf為原始矩陣,fT為原始矩陣的轉置,w為變換矩陣,這里設定為1001011001101001二、詳細設計1、類的描述與定義(1)私有數據成員int(*a)4:a指向方
2、陣數組。intw44:w為變換矩陣。intm:m表示方陣的行和列數。(2)公有成員函數CMatrix(inta4,intm):用給定的參數a和m初始化數據成員a和m;對變換矩陣w進行初始化,要求必須用循環實現。voidTransform():根據上述變換算法,求出變換后的數組形式,存放在原始數組內。voidshow():在屏幕上顯示數組元素。CMatrix():釋放動態分配的空間。2、主要函數設計在主程序中定義數組intarr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作為原始數組。定義一個CMatrix類對象test,用arr初始化test,完成對該類的測
3、試。三、源程序清單#includeclassCMatrixprivate:int(*a)4;intw44;intm;public:CMatrix(inta4,intm)inti,j;this-a=newintm4;this-m=m;for(i=0;i4;i+)for(j=0;j4;j+)if(i=j|i+j=4-1)wij=1;elsewij=0;for(i=0;im;i+)for(j=0;jaij=aij;voidTransform();voidshow();CMatrix()if(a)deletea;voidCMatrix:Transform()inti,j,k;for(i=0;im;i+
4、)for(j=i;j4;j+)k=aij,aij=aji,aji=k;intsum;intturn44;for(i=0;i4;i+)for(j=0;j4;j+)sum=0;for(k=0;k4;k+)sum+=wik*akj;turnij=sum;for(i=0;i4;i+)for(j=0;j4;j+)aij=turnij;voidCMatrix:show()for(inti=0;im;i+)for(intj=0;j4;j+)coutaijt;coutendl;voidmain()intarr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;CMatrixtes
5、t(arr,4);cout原矩陣為:endl;test.show();test.Transform();cout經線性變換后的矩陣為:endl;test.show();四、實踐小結應熟練掌握矩陣的乘法方式。五、運行結果實踐任務213建立一個類MOVE,對數組中元素進行循環換位,即每個元素后移三位,最后三個元素移到最前面。二、詳細設計1、類的描述與定義(1)私有數據成員intarray20:一維整型數組。intn:數組中元素的個數。(2)公有成員函數MOVE(intb,intm):構造函數,初始化成員數據。voidchange():進行循環換位。voidprint():輸出一維數組。2、主要函數
6、設計在主程序中用數據21,65,43,87,12,84,44,97,32,55對該類進行測試。三、源程序清單#includeclassMOVEprivate:intarray20;intn;public:MOVE(intb,intm)for(inti=0;im;i+)arrayi=bi;n=m;voidchange();voidprint();voidMOVE:change()inttem3;inti=0;while(i3)tem2-i=arrayn-1-i;i+;for(i=0;in-3;i+)arrayn-1-i=arrayn-1-3-i;for(i=0;i3;i+)arrayi=temi
7、;voidMOVE:print()for(inti=0;in;i+)coutarrayit;coutendl;voidmain()ints=21,65,43,87,12,84,44,97,32,55;intn=sizeof(s)/sizeof(int);MOVEtest(s,n);test.print();test.change();test.print();四、實踐小結利用臨時數組先保存后3位,再依次把數放入對應位。五、運行結果實踐任務310定義一個字符串類CString,并設計一個算法實現,給定關鍵字str1在字符串str中出現時用關鍵字str2進行替換的功能。二、詳細設計1、類的描述與定
8、義(1)私有數據成員char*str;原始字符串。char*str1;目標關鍵字。char*str2;替換關鍵字。intflag;標記替換是否完成替換。(2)公有成員函數CString(char*s,chars1,char*s2):用給定的參數s、s1和s2相對應的初始化數據成員str、str1和str2。flag設置缺省0。voidReplace():判斷str字符串中是否出現str1,若出現就用str2替換,否則什么都不做。若替換成功了標記flag為1,若替換不成功則標記flag為0。voidShow():若替換成功,則在屏幕上顯示目標關鍵字、替換關鍵字和替換后的原始字符串;若不成功則顯示
9、原始字符串。CString():釋放動態分配的空間。2、主要函數設計在主程序中定義字符串chars=”Iamstudent,youarestudenttoo,weareallstudent.”作為原始字符串,定義chars1=”student”作為目標關鍵字,定義chars2=”teacher”作為替換關鍵字。定義一個CString類對象test,用s,s1和s2初始化test,完成對該類的測試。三、源程序清單#include#includeclassCStringprivate:char*str;char*str1;char*str2;intflag;public:CString(char*
10、s,chars1,char*s2)str=newcharstrlen(s)+strlen(s2)+strlen(s1)+1;str1=newcharstrlen(s1)+1;str2=newcharstrlen(s2)+1;strcpy(str,s);strcpy(str1,s1);strcpy(str2,s2);flag=0;voidReplace();voidShow();CString()if(str)deletestr;if(str1)deletestr1;if(str2)deletestr2;voidCString:Replace()inti=0;intk=0,count=0;whi
11、le(stri)while(stri!=str10&stri)i+;if(istrlen(str)if(strncmp(str+i,str1,strlen(str1)=0)k=1;if(k)char*turn=newcharstrlen(str)+strlen(str1)+strlen(str2)+1;strncpy(turn,str,i);turni=0;strcat(turn,str2);strcat(turn,str+i+strlen(str1);strcpy(str,turn);deleteturn;i=i+strlen(str2);k=0;count+;if(count)flag=1
12、;voidCString:Show()if(flag)cout目標關鍵字:str1n替換關鍵字:str2n替換后的原始字符串:strendl;elsecout原始字符串:strendl;voidmain()chars=Iamstudent,youarestudenttoo,weareallstudent.;chars1=student;chars2=teacher;CStringtest(s,s1,s2);test.Replace();test.Show();四、實踐小結利用臨時字符數組,進行字符替代。五、運行結果實踐任務48建立一個MATRIX,生成并顯示一個螺旋方陣。螺旋方陣如下圖所示,起
13、始數置于方陣的左上角,然后從起始數開始依次遞增,按順時針方向從外向里旋轉填數而成。12345171819624252072322218131211109二、詳細設計1、類的描述與定義(1)私有數據成員inta2020:二維整型數組存放螺旋方陣。intstartnum:螺旋方陣的起始數。intn:存放方針的層數。(2)公有成員函數MATRIX(ints,intm):構造函數,初始化成員數據startnum和n。voidprocess():生成起始數為startnum的n行螺旋方陣。voidprint():輸出螺旋方陣。2、主要函數設計在主程序中定義MATRIX類的對象t對該類進行測試。三、源程序
14、清單#includeclassMATRIXprivate:inta2020;intstartnum;intn;public:MATRIX(ints,intm)startnum=s;n=m;voidprocess();voidprint();voidMATRIX:process()/生成起始數為startnum的n行螺旋方陣;inti,j;intk;intturn=startnum;for(k=1;k=n/2;k+)for(i=k-1,j=k-1;jn-(k-1);j+)aij=turn+;j-;turn-;for(;i=k-1;j-)aij=turn+;j+;turn-;for(;i=k;i-
15、)aij=turn+;an/2(n-1)/2=n*n-1+startnum;voidMATRIX:print()inti,j;for(i=0;in;i+)for(j=0;jn;j+)coutaijt;coutendlendl;voidmain()ints,m;coutsm;MATRIXt(s,m);cess();t.print();四、實踐小結發現本質的邏輯關系,利用循環語句實現。五、運行結果實踐任務46定義一個字符串類String,實現判斷該字符串是否為回文字符串。所謂回文字符串,是指該字符串左右對稱。例如字符串“123321”是回文字符串。二、詳細設計1、類的描述與定義(1)私有數據成員c
16、har*str;inty:標記是否為回文字符串。(2)公有成員函數String(char*s):構造函數,用給定的參數s初始化數據成員str。y初始化為0。voidhuiwen():判斷str所指向的字符串是否為回文字符串。voidshow():在屏幕上顯示字符串。2、主要函數設計在主程序中定義字符串chars=”ababcedbaba”作為原始字符串。定義一個String類對象test,用s初始化test,完成對該類的測試。三、源程序清單#include#includeclassStringprivate:char*str;inty;public:String(char*s)intn=str
17、len(s);str=newcharn+1;strcpy(str,s);y=0;voidhuiwen();voidshow();String()if(str)deletestr;voidString:huiwen()intn,judge=0;n=strlen(str);for(inti=0;i(n/2);i+)if(stri=strn-1-i)judge+;if(judge=i)y=1;voidString:show()if(y=1)couty=1,該字符串是回文數strendl;elsecouty=0,該字符串不是回文數strendl;voidmain()/測試;chars=ababcedb
18、aba;Stringtest(s);test.huiwen();test.show();四、實踐小結掌握判斷回文字符串的一般形式。五、運行結果實踐任務54建立一個類MOVE,將數組中最大元素的值與最小元素的值互換。二、詳細設計1、類的描述與定義(1)私有數據成員int*array:一維整型數組。intn:數組中元素的個數。(2)公有成員函數MOVE(intb,intm):構造函數,初始化成員數據。voidexchange():輸出平均值,并將數組中的元素按要求重新放置。voidprint():輸出一維數組。MOVE():析構函數。2、主要函數設計在主程序中用數據21,65,43,87,12,8
19、4,44,97,32,55對該類進行測試。三、源程序清單#includeclassMOVEprivate:int*array;intn;public:MOVE(intb,intm)array=newintm;n=m;for(inti=0;im;i+)arrayi=bi;voidexchange();voidprint();MOVE()if(array)deletearray;voidMOVE:exchange()floatave=0;for(inti=0;in;i+)ave+=arrayi;ave/=n;cout平均值為aveendl;intmax,min;max=min=array0;int
20、m;for(i=0,m=0;i=max)m=i,max=arrayi;intl;for(i=0,l=0;in;i+)if(arrayimax)l=i,max=arrayi;i=arraym,arraym=arrayl,arrayl=i;voidMOVE:print()for(inti=0;in;i+)coutarrayi;voidmain()inttext=21,65,43,87,12,84,44,97,32,55;intnum;num=sizeof(text)/sizeof(int);MOVEs(text,num);s.print();coutendl;s.exchange();s.prin
21、t();四、實踐小結學會求數組中最大元素與最小元素方法,并實現交換。五、運行結果實踐任務63建立一個類MOVE,不進行排序,將數組中小于平均值的元素放到數組的左邊,大于平均值的元素放到數組的右邊。二、詳細設計1、類的描述與定義(1)私有數據成員floatarray20:一維整型數組。intn:數組中元素的個數。(2)公有成員函數MOVE(floatb,intm):構造函數,初始化成員數據。voidaverage():輸出平均值,并將數組中的元素按要求重新放置。voidprint():輸出一維數組。2、主要函數設計在主程序中用數據1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3對該類進行測試。三、源程序清單#includeclassMOVEprivate:floatarray20;intn;public:MOVE(floatb,intm)for(inti=0;im;i+)arrayi=bi;n=m;voidaverage();voidprint();MOVE();voidMOVE:average()floatave=0;inti,j;for(i=0;in;i+)ave+=arrayi;ave/=n;coutaveendl;floatturn20;j=0;for(i=0;in;i+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫療用品牙科管理制度
- 公司禁煙禁火管理制度
- 大學采購外協管理制度
- 勞動關系解除管理制度
- 商場清潔日常管理制度
- 工程分包資料管理制度
- 室內種植植物管理制度
- 關于工地材料管理制度
- 商業運營服務管理制度
- 公司財務庫房管理制度
- 陣列間距計算表(光伏設計程序工具excel自帶公式版)
- 《夏商和西周的貝幣》課件
- 軸對稱與軸對稱圖形課件
- 新疆禮信新材料有限公司年產5千噸碳酸鋰及5萬噸新型材料項目環評報告表
- 免疫系統的疾病和治療
- 期末考試復習方法指導《復之有道習之有效》期末考試動員期末考試心態調整主題班會
- 護理查房流程甲亢
- 物流專線協議書簡短 物流專線合作協議
- 劍橋Think第一級+Unit+2+Money+and+how+to+spend+it+課件
- 消防救援-森林火災撲救組織指揮及基本戰法
- 認識飛機(課堂PPT)
評論
0/150
提交評論