數(shù)據(jù)結(jié)構(gòu)課程設計報告-進制轉(zhuǎn)換_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設計報告-進制轉(zhuǎn)換_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設計報告-進制轉(zhuǎn)換_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設計報告-進制轉(zhuǎn)換_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設計報告-進制轉(zhuǎn)換_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

..一、問題描述:任意給定一個M進制的數(shù)x,請實現(xiàn)如下要求:1、求出此數(shù)x的10進制值(用MD表示)2、實現(xiàn)對x向任意的一個非M進制的數(shù)的轉(zhuǎn)換3、至少用兩種或兩種以上的方法實現(xiàn)上述要求(用棧解決,用數(shù)組解決,其它方法解決)二、實驗環(huán)境硬件:普通個人pc機1、用數(shù)組實現(xiàn)該問題:ten_else()函數(shù)是實現(xiàn)十進制轉(zhuǎn)換為其它進制的函數(shù),先設置一個while循環(huán),當十進制數(shù)g等于零時停止,再將輸入的十進制數(shù)x取首先對需要轉(zhuǎn)換的進制M取余,然后再對其MM制數(shù)是在主函數(shù)中實現(xiàn)的。M進制轉(zhuǎn)十進制則是從該M進制數(shù)的最后一位開始算,依次列為第0、1、2…n位并分別乘函數(shù)將其轉(zhuǎn)換為非M進制的數(shù)。實際上十進制起到了一個橋梁作用。該問題:是去棧頂元素(用z表示棧頂元素),數(shù)據(jù)入棧,出棧的操作。棧具有后進先出的性質(zhì),故其用s.pop()取數(shù)較數(shù)組的逆向取數(shù)較為方便,體現(xiàn)了棧的優(yōu)越性。四、設計和編碼的回顧討論和分析 (1)函數(shù)ten_else()的作用體現(xiàn)在將任意10進制數(shù)轉(zhuǎn)換為非10進制數(shù),程序能實現(xiàn)1~16進進制以上的數(shù)需要用字母表示,由此設計了switch函數(shù),當出現(xiàn)余數(shù)大.與10的情況可以調(diào)用相應的字母??紤]到最終結(jié)果是所求余數(shù)的倒序,添加新的整型變量j,通過一個for循環(huán)實現(xiàn)倒序。 (2)編程初期設計了else_ten函數(shù),后幾經(jīng)修改將其融入main函數(shù)中較為直觀。 (3)當輸入10進制以下的數(shù)向10進制轉(zhuǎn)換時候較為簡單,程序中設計char型數(shù)組s[maxnum]來統(tǒng)計所輸入數(shù)據(jù)的位數(shù),不需要用戶輸入。在求10進制的時候通過for循環(huán)求一個累和即 (4)當輸入10進制以上的數(shù)設計字母較為復雜,通過對ASCⅡ表的理解設計程序。 (5)在用棧法實現(xiàn)非10進制向10進制轉(zhuǎn)換的時候遇到了些麻煩,當輸入8A的時候程序?qū)?當成字符類型,將其編譯為數(shù)字56,導致最終轉(zhuǎn)換結(jié)果出現(xiàn)錯誤。于是通過查閱ASCⅡ表對程序做出了修正,設計了條件語句if(z<=57)z-=48;if(z>=65){z-=65;z+=10;}五、程序框圖始輸入要輸入數(shù)的進制M及輸入要轉(zhuǎn)換的數(shù)輸入要轉(zhuǎn)換的進制類型余數(shù)進棧(存入數(shù)組)輸出棧(數(shù)組)及轉(zhuǎn)換結(jié)果六、經(jīng)驗和體會 (2)通過此次課程設計的考驗,讓我們回顧了算法與數(shù)據(jù)結(jié)構(gòu)這門課的主要內(nèi)容。掌握了如何分別用數(shù)組和棧來實現(xiàn)數(shù)據(jù)存儲與轉(zhuǎn)換,加深了對棧的掌握和操作,以及棧先進后出的特 現(xiàn)了進制轉(zhuǎn)換問題,收獲很大同時在編寫代碼過程中也出現(xiàn)了很多的問題,最大的問題就是.對程序設計框架結(jié)構(gòu)的不了解,在實現(xiàn)代碼與功能的連接時經(jīng)常會出現(xiàn)各種不同的錯誤,在實現(xiàn)一些功能時系統(tǒng)常常會報錯,許多錯誤不知從哪修改。課程設計中,回顧了很多以前的 (4)每一次的課程設計,都是讓我們對原有的知識從了解表面到深入本質(zhì),從個體學習到整體把握的跳躍,對新知識的汲取,更是把課本的知識應用到實際中,讓我們了解了我們的學習有什么用,能夠解決什么樣的問題,增加了自信和學習的動力??傊?,我們收獲匪淺首先由衷感謝老師提供這樣一個鍛煉自己的機會,感受到學來的知識不只是用來完成試卷的。一向慣于獨立思考的自己學會了積極的同同學、朋友交流,取長同進步。課程設計使自己發(fā)現(xiàn)考試并不是最重要,最重要的是能運用所學的知識。在整個課程設計的學習過程中,不再是用學到的知識解題,而是在實際運用時遇到什么學什錄代碼框架//實現(xiàn)1~16進制之間的相互轉(zhuǎn)化(數(shù)組方法)//實現(xiàn)1~16進制之間的相互轉(zhuǎn)化(數(shù)組方法)#include<iostream.h>#include<math.h>//#include<stdio.h>#defineN100#definemax_num10inty,n,s;intm,r,x;voidten_else(intg,inth)//十進制數(shù)轉(zhuǎn)換為其他進制數(shù){intc[N],mod;inti=0,j;while(g!=0){mod=g%h;g=g/h;c[i]=mod;i++;}for(j=i-1;j>=0;j--)switch(c[j]){case10:case11:case12:case13:case14:case15:cout<<"A";break;cout<<"B";break;cout<<"C";break;cout<<"D";break;cout<<"E";break;cout<<"F";break;.default:cout<<c[j];}}/*voidten_else(intg,inth){intc[N],mod;inti=0,j;//十進制數(shù)轉(zhuǎn)換為其他進制數(shù)while(g!=0){mod=g%h;g=g/h;c[i]=mod;i++;}for(j=i-1;j>=0;j--){if(c[j]<=9)cout<<c[j];printf("%c",('A'+(c[j]-10)));//cout<<('A'+(c[j]-9));}}voidmain(){cout<<"請輸入任意進制M:";cin>>m;if(m<10)//2~9進制轉(zhuǎn)換成10進制{chars[max_num];intk,z=0,j=0;//z存儲十進制數(shù),j表示輸入m進制數(shù)的位數(shù)。for(inti=0;i<max_num;i++)siu';cout<<"請輸入一個"<<m<<"進制數(shù):";cin>>s;for(i=1;i<max_num;i++)if(s[i]!='u')j++;k=j;//保存輸入位數(shù)for(i=0;i<j;i++).z=z+(s[i]-'0')*(pow(m,--k));cout<<"轉(zhuǎn)換后的10進制數(shù)MD為:"<<z<<endl;cout<<"請輸入需要轉(zhuǎn)換成的進制(非M):";cin>>r;cout<<"輸出轉(zhuǎn)換成"<<r<<"進制的結(jié)果:";ten_else(z,r);cout<<endl;}elseif(m<=16&&m>=11)//11~16進制轉(zhuǎn)換成10進制{chars[max_num];intk,z=0,j=0;//z存儲十進制數(shù),j表示輸入16進制數(shù)的位數(shù)。for(inti=0;i<max_num;i++)siu';cout<<"請輸入一個"<<m<<"進制數(shù):";cin>>s;for(i=1;i<max_num;i++)if(s[i]!='u')j++;k=j;//保存輸入位數(shù)for(i=0;i<j;i++){if(s[i]>='A'&&s[i]<='F')z=z+(s[i]-'A'+10)*(pow(m,--k));if(s[i]>='a'&&s[i]<='f')z=z+(s[i]-'a'+10)*(pow(m,--k));if(s[i]>='0'&&s[i]<='9')z=z+(s[i]-'0')*(pow(m,--k));}cout<<"轉(zhuǎn)換后的10進制數(shù)為:"<<z<<endl;cout<<"請輸入需要轉(zhuǎn)換成的進制(非M):";cin>>r;cout<<"輸出轉(zhuǎn)換成"<<r<<"進制的結(jié)果:";ten_else(z,r);cout<<endl;}elseif(m==10)//十進制轉(zhuǎn)換成其它進制{intx;cout<<"請輸入一個10進制數(shù):";cin>>x;cout<<"請輸入需要轉(zhuǎn)換成的進制(非M):";cin>>r;.if(r<=10){cout<<"輸出轉(zhuǎn)換成"<<r<<"進制的結(jié)果:";ten_else(x,r);cout<<endl;}{cout<<"輸出轉(zhuǎn)換成"<<r<<"進制的結(jié)果:";ten_else(x,r);cout<<endl;}}}//實現(xiàn)1~16進制之間的相互轉(zhuǎn)化(堆棧方法)#include<iostream.h>#include<math.h>enumerror_code{success,overflow,underflow};constmaxlen=100;inta,n,h;classstack{public:stackboolempty()const;boolfull()const;error_codeget_top(int&x)const;error_codepush(intx);error_codepop();intseesize(){returncount;}private:intcount;intdata[maxlen];//初始化鏈棧stack::stack(){count=0;}.boolstack::empty()const{if(count==0)returntrue;returnfalse;}//判斷棧是否為空error_codestack::get_top(int&x)const{if(empty())returnunderflow;//取棧頂元素{x=data[count-1];returnsuccess;}}error_codestack::push(intx)//入棧{if(full())returnunderflow;data[count]=x;count++;returnsuccess;}error_codestack::pop()//出棧{if(empty())returnunderflow;count--;returnsuccess;}boolstack::full()const{if(count==maxlen)returntrue;returnfalse;}voidten_else(intg,inth)//十進制數(shù)g轉(zhuǎn)換為其他進制(h進制)數(shù){inta,x;intmod;stacks;mod=g%h;if(mod>9){a=mod+55;if(a>=65).{switch(a-55){case10:cout<<"A";break;case11:cout<<"B";break;case12:cout<<"C";break;case13:cout<<"D";break;case14:cout<<"E";break;case15:cout<<"F";break;default:break;}}{s.push(a);}}{s.push(mod);}g=g/h;if(g>0)ten_else(g,h);while(!s.empty()){s.get_top(x);s.pop();cout<<x;}.}intmain(){intm,a,z,sum;inti=1;intj=0;sum=0;stacks;cout<<"請輸入任意進制M(1~16):";cin>>m;cout<<"請輸入"<<m<<"進制的數(shù):";if(m==10){intx;cin>>x;cout<<"10進制數(shù)MD即為:"<<x<<endl;cout<<"輸入最終轉(zhuǎn)化的進制(非M):";cin>>h;ten_else(x,h);cout<<endl;}elseif(m<10){intx;cin>>x;while(x!=0){a=x%10;x=x/10;s.push(a);}while(!s.empty()){s.get_top(z);sum=sum+z*pow(m,s.seesize()-1);s.pop();}cout<<"轉(zhuǎn)換的10進制數(shù)為:";cout<<sum<<endl;cout<<"輸入最終轉(zhuǎn)化的進制(非M):";cin>>h;ten_else(sum,h);.co

溫馨提示

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

評論

0/150

提交評論