⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 juzhenchange.cpp

📁 本程序是用来将客户选定图书放入购书车。使用户对图书的购买信息有详细的了解
💻 CPP
字号:
// Juzhenchange.cpp: implementation of the CJuzhenchange class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "矩阵换位法.h"
#include "Juzhenchange.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CJuzhenchange::CJuzhenchange()
{
	int i;	int j;
	for(i=0;i<50;i++)
		for(j=0;j<50;j++)
			before[i][j]=after[i][j]=' ';
	for(i=0;i<50;i++)
	{
		f[i]=0;
	}
}

CJuzhenchange::~CJuzhenchange()
{

}

void CJuzhenchange::change()
{
	keytof();//将输入的矩阵字符串转换成矩阵
	if(mode==0)//加密
	{
		if(hangshu*lieshu<mingwen.GetLength())
		{
			result="加密失败!原因:矩阵大小不够";
			return;
		}
		encrypt();
	}
	else//解密
	{
		if(hangshu*lieshu<mingwen.GetLength())
		{
			result="加密失败!原因:矩阵大小不够";
			return;
		}
		decrypt();
	}
}

void CJuzhenchange::encrypt()
{
	tojuzhen(mingwen);//将字符串影射到before矩阵上
	exchange();//before->after
	toresult();//从after矩阵转化为result字符串
}

void CJuzhenchange::decrypt()
{
	tojuzhen(miwen);//将字符串影射到before矩阵上
	exchange();//before->after
	toresult();//从after矩阵转化为result字符串
}

void CJuzhenchange::tojuzhen(CString m)//将字符串影射到before矩阵上
{
	int i;	int j;	int k=0;
	for(i=0;i<hangshu&&k<m.GetLength();i++)
		for(j=0;j<lieshu&&k<m.GetLength();j++)
		{
			before[i][j]=m.GetAt(k);
			k++;
		}
}

void CJuzhenchange::keytof()
{
	int i,j,k;	CString l;
	i=j=k=0;
	while(j<key.GetLength())
	{
		if(key.GetAt(j)==' '||j==key.GetLength()-1)//字符串下一位为空格,即当前分串为一输入项
		{
			f[i]=atoi(sum(k,j+1));
			k=j+1;//将当前位置作为下一输入项的起始位
			j++;
			i++;
		}
		else///字符串不为空格
		{
			j++;
		}

	}
	for(k=0;k<i;k++)//为方便输入,使输入从1记而非0
	{
		f[k]--;
	}
}

CString CJuzhenchange::sum(int i, int j)//i~j-1合并
{
	int k;	CString s="";
	for(k=i;k<j;k++)
		s=s+key.GetAt(k);
	return s;
}

void CJuzhenchange::exchange()//before矩阵到after矩阵的转化
{
	int i;	int j;
	if(mode==0)//加密
	{
		for(j=0;j<lieshu;j++)//换列
			for(i=0;i<hangshu;i++)
				after[i][j]=before[i][f[j]];	
	}
	else//解密
	{
		for(j=0;j<lieshu;j++)//换列
			for(i=0;i<hangshu;i++)
				after[i][f[j]]=before[i][j];	
	}
}

void CJuzhenchange::toresult()//从after矩阵转化为result字符串
{
	int i,j;	int k=0;
	for(i=0;i<hangshu;i++)
		for(j=0;j<lieshu;j++)
		{
			result.Insert(k,after[i][j]);
			k++;
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -