亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++二維數(shù)組螺旋加密信息

 更新時(shí)間:2021年12月31日 14:40:56   作者:Stupefy.  
大家好,本篇文章主要講的是C++二維數(shù)組螺旋加密信息,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

由題目要求可知 題目要求先創(chuàng)建一個(gè)r行c列的矩陣

然后輸入一串字符串 字符串長度肯定小于r*c/5

由A C M的表示方式可以看出每個(gè)字符由5位的二進(jìn)制位系統(tǒng)表示(無符號(hào)位)

那么我們首先可以先創(chuàng)建一個(gè)字符串類型

string a;
cin>>a;

rt 字母表示它是26字母表中第幾個(gè)字母

很多人第一時(shí)間想用數(shù)組11對(duì)應(yīng) 或者switch語句選擇

但轉(zhuǎn)念一想就知道太麻煩了 所以這里用字符的ASCII碼減去64來表示它的數(shù)字形式

轉(zhuǎn)ASCII碼都知道 強(qiáng)類型轉(zhuǎn)換

由于不止一個(gè)字符 為了提高代碼的復(fù)用性 我們專門寫個(gè)函數(shù)來返回字母的數(shù)字形式的二進(jìn)制值

int bit(char a)  //定義一個(gè)將字母轉(zhuǎn)換為二進(jìn)制數(shù)的函數(shù) 返回二進(jìn)制數(shù)
{
    int num=int(a)-64;
    int result = 0, j = 1;
	while(num){
		result = result + j * (num % 2);
		num = num / 2;
		j = j * 10;
	}
	return result;
}

二進(jìn)制值有了 還得確保每個(gè)字母都能轉(zhuǎn)換為5位的二進(jìn)制系統(tǒng)

故在循環(huán)之中再套循環(huán) 像00011這種啥數(shù)據(jù)類型都不是的玩意兒 最好直接給它套數(shù)組里去 所以我們先定義個(gè)數(shù)組

然后按流程把1和0放進(jìn)去 并通過while循環(huán)補(bǔ)全0

for(int count0=0;count0<a.size();count0++)
    {
        int Tbits=bit(a[count0]);    //得到二進(jìn)制數(shù)
        digits=judge(Tbits);  //判斷位數(shù) 將5位2進(jìn)制數(shù)補(bǔ)全0
        times=digits-1;      //獲取位數(shù) 
        //從而將二進(jìn)制數(shù)各個(gè)位數(shù)上的數(shù)字準(zhǔn)確的填入數(shù)組
        while(digits!=5)
        {
            arr[s]=0;
            digits++;
            s++;
        }
        while(Tbits!=0)
	   {
		   d=Tbits%10; // 從最小位數(shù)開始 
		   arr[s+times]=d;
		   Tbits/=10;
		   times--;
	    }
	    s=5*(count0+1); //每個(gè)數(shù)都是5位 故讓每循環(huán)完一個(gè)字母讓索引+5
    }

這時(shí)我就達(dá)到了把每個(gè)5位二進(jìn)制位系統(tǒng)的值都放進(jìn)數(shù)組里去

但是根據(jù)題意可知 有空缺的地方 需要用0填充 故寫個(gè)for循環(huán)將剩下的空用0填充

for(int count1=a.size()*5;count1<(r*c);count1++)
    {
        arr[count1]=0; //將剩余的位置用0填充
    }

重頭戲來了

如何螺旋式將這個(gè)數(shù)組的每個(gè)數(shù)填到二維數(shù)組中去呢?

根據(jù)題意可知 填充方向是右下左上

故思路是:

先填充第一行 再填充最后一列 再填充最后一行 再填充第一列

填充完第一行 起始行變量+1

填充完最后一列 末列變量-1

填充完最后一行 末行變量-1

填充完第一列 起始列變量+1

代碼如下:

int iStart=0,iEnd=r-1,jStart=0,jEnd=c-1,times1=0,i,j;
	while(iEnd>=iStart&&jEnd>=jStart){
		//上面的行 
		for(j=jStart;j<=jEnd;j++){
			array[iStart][j]=arr[times1];
			times1++;
		}
		iStart++;
		//右邊的列
		for(i=iStart;i<=iEnd;i++){
			array[i][jEnd]=arr[times1];
			times1++;
		}
		jEnd--;
		//下面的行 
		if(iEnd>=iStart){
			for(j=jEnd;j>=jStart;j--){
				array[iEnd][j]=arr[times1];
				times1++;
			}
			iEnd--;
		}
		//左邊的列 
		if(jEnd>=jStart){
			for(i=iEnd;i>=iStart;i--){
				array[i][jStart]=arr[times1];
				times1++;
			}
			jStart++;
		}
	}

根據(jù)題意 還有一個(gè)大坑 這個(gè)惡心的出題人讓我們正常打印 即第一行 第二行 第三行....

真是處處都是坑

故直接一個(gè)嵌套for循環(huán)

for(i=0;i<r;i++){
		for(j=0;j<c;j++){
			cout<<array[i][j];
		}
	}
}

完成!

到此這篇關(guān)于C++二維數(shù)組螺旋加密信息的文章就介紹到這了,更多相關(guān)C++二維數(shù)組螺旋加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VS中的scanf_s函數(shù)和scanf用法及說明

    VS中的scanf_s函數(shù)和scanf用法及說明

    這篇文章主要介紹了VS中的scanf_s函數(shù)和scanf用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)希爾排序算法

    C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)希爾排序算法

    這篇文章主要為大家介紹了C語言希爾排序算法實(shí)現(xiàn)植物大戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C語言動(dòng)態(tài)內(nèi)存管理的原理及實(shí)現(xiàn)方法

    C語言動(dòng)態(tài)內(nèi)存管理的原理及實(shí)現(xiàn)方法

    C語言動(dòng)態(tài)內(nèi)存管理的原理是通過 malloc() 函數(shù)申請(qǐng)一塊連續(xù)的內(nèi)存空間,并返回其地址,通過 free() 函數(shù)釋放該內(nèi)存空間。實(shí)現(xiàn)方法是通過在程序運(yùn)行時(shí)動(dòng)態(tài)地管理內(nèi)存,即在需要內(nèi)存時(shí)申請(qǐng),不需要時(shí)釋放,避免了靜態(tài)內(nèi)存分配的浪費(fèi)和不足
    2023-04-04
  • C語言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    C語言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)list增刪查改模擬,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • C++獲取文件大小的4種常見技巧分享

    C++獲取文件大小的4種常見技巧分享

    這篇文章主要介紹了C++獲取文件大小的4種常見技巧分享,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲

    C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C語言中建立和刪除文件連接的相關(guān)函數(shù)講解

    C語言中建立和刪除文件連接的相關(guān)函數(shù)講解

    這篇文章主要介紹了C語言中建立和刪除文件連接的相關(guān)函數(shù)講解,分別為link和unlink函數(shù)的使用,需要的朋友可以參考下
    2015-09-09
  • C++ opencv ffmpeg圖片序列化實(shí)現(xiàn)代碼解析

    C++ opencv ffmpeg圖片序列化實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了C++ opencv ffmpeg圖片序列化實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 實(shí)例代碼講解c++ 繼承特性

    實(shí)例代碼講解c++ 繼承特性

    這篇文章主要介紹了c++ 繼承特性的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論