📄 tool.cpp
字号:
// Tool.cpp : 实现文件
//
#include "stdafx.h"
#include "RSA.h"
#include "Tool.h"
#include ".\tool.h"
// CTool 对话框
IMPLEMENT_DYNAMIC(CTool, CDialog)
CTool::CTool(CWnd* pParent /*=NULL*/)
: CDialog(CTool::IDD, pParent)
, m_A(_T(""))
, m_B(_T(""))
, m_C(_T(""))
{
}
CTool::~CTool()
{
}
void CTool::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_A, m_A);
DDX_Text(pDX, IDC_B, m_B);
DDX_Text(pDX, IDC_C, m_C);
}
BEGIN_MESSAGE_MAP(CTool, CDialog)
ON_BN_CLICKED(IDC_ADD, OnBnClickedAdd)
ON_BN_CLICKED(IDC_DEC, OnBnClickedDec)
ON_BN_CLICKED(IDC_DIV, OnBnClickedDiv)
ON_BN_CLICKED(IDC_EUC, OnBnClickedEuc)
ON_BN_CLICKED(IDC_HEX, OnBnClickedHex)
ON_BN_CLICKED(IDC_MOD, OnBnClickedMod)
ON_BN_CLICKED(IDC_MUL, OnBnClickedMul)
ON_BN_CLICKED(IDC_SUB, OnBnClickedSub)
END_MESSAGE_MAP()
// CTool 消息处理程序
void CTool::OnBnClickedAdd()//大数加法
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0||m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
C.Mov(A.Add(B));
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedDec()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>256)
{
m_C=_T("A不得大于256位");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||
((m_A[i]>'9')&&(m_A[i]<'A'))||
((m_A[i]>'F')&&(m_A[i]<'a'))||
(m_A[i]>'f'))
{
m_C=_T("A必须为0-9或A-F或a-f组成的整数");
UpdateData(FALSE);
return;
}
}
if(m_A.GetLength()==0)
{
m_C=_T("请输入大数A");
UpdateData(FALSE);
return;
}
A.Get(m_A,HEX);
A.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedDiv()//大数除法
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0&&m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
if(m_B=='0')
{
m_C=_T("B不能为0");
UpdateData(FALSE);
return;
}
C.Mov(A.Div(B));
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedEuc()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0&&m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
if(m_A=='0')
{
m_C=_T("A不能为0");
UpdateData(FALSE);
return;
}
C.Mov(B.Euc(A));
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedHex()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310)
{
m_C=_T("A不得大于310位");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
if(m_A.GetLength()==0)
{
m_C=_T("请输入大数A");
UpdateData(FALSE);
return;
}
A.Get(m_A,DEC);
A.Put(m_C,HEX);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedMod()//大数取余
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0&&m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
if(m_B=='0')
{
m_C=_T("B不能为0");
UpdateData(FALSE);
return;
}
C.Mov(A.Mod(B));
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedMul()//大数乘法
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0&&m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
C.Mov(A.Mul(B));
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
void CTool::OnBnClickedSub()//大数减法
{
UpdateData(TRUE);
if(m_A.GetLength()>310||m_B.GetLength()>310)
{
m_C=_T("A、B不得大于310位");
UpdateData(FALSE);
return;
}
if(m_A.GetLength()==0||m_B.GetLength()==0)
{
m_C=_T("请输入两个大数");
UpdateData(FALSE);
return;
}
for(int i=0;i<m_A.GetLength();i++)
{
if((m_A[i]<'0')||(m_A[i]>'9'))
{
m_C=_T("A必须为0-9组成的整数");
C.Put(m_C,DEC);
UpdateData(FALSE);
return;
}
}
A.Get(m_A,DEC);
B.Get(m_B,DEC);
if(A.Cmp(B)>=0)
{
C.Mov(A.Sub(B));
C.Put(m_C,DEC);
}
else
{
C.Mov(B.Sub(A));
C.Put(m_C,DEC);
m_C.Insert(0,'-');
}
UpdateData(FALSE);
return;
// TODO: 在此添加控件通知处理程序代码
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -